본문 바로가기
1-4. 코딩테스트 문제집(진행중)/PCCP(Lv2)

[PCCP] Lv2: N^2 배열자르기(87390) 해설

by cogito21_cpp 2024. 12. 23.
반응형

문제

- 문제 링크: 배열자르기

 

해설

- 자료구조: 

- 시간복잡도: 

 

(풀이과정)

1) 

2) 

3) 

4) 

 

코드

(C언어)

solution 1)

더보기

solution 1

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int* solution(int n, long long left, long long right) {
    // return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
    int* answer = (int*)malloc(sizeof(int)*(right-left+1));
    
    int quo = 0;
    int rem = 0;
    for (long long i = 0; i <= right-left+1; ++i) {
        quo = (i+left) / n;
        rem = (i+left) % n;
        if (quo >= rem)
            answer[i] = quo + 1;
        else
            answer[i] = rem + 1;
    }
    
    
    return answer;
}

solution 2)

더보기
#include<>

solution 3)

더보기
#include<>

 

(C++)

solution 1)

- for문에서 int i = 0으로 초기화시 시간초과 에러 발생

더보기
#include <string>
#include <vector>

using namespace std;

vector<int> solution(int n, long long left, long long right) {
    vector<int> answer;
    int quo = 0;
    int rem = 0;
    for (long long i = left; i <= right; ++i) {
        quo = i / n;
        rem = i % n;
        if (quo >= rem)
            answer.push_back(quo+1);
        else
            answer.push_back(rem+1);
    }
    return answer;
}

solution 2)

더보기
#include<>

solution 3)

더보기
#include<>

 

(C#)

solution 1)

더보기
#include<>

solution 2)

더보기
#include<>

solution 3)

더보기
#include<>

 

(Java)

solution 1)

더보기
#include<>

solution 2)

더보기
#include<>

solution 3)

더보기
#include<>

 

(Python)

solution 1)

더보기
def solution(n, left, right):
    answer = []
    for i in range(left, right+1):
        answer.append(max(i//n, i%n)+1)

    return answer

solution 2)

더보기
import

solution 3)

더보기
import

 

(JavaScript)

solution 1)

더보기
import

solution 2)

더보기
import

solution 3)

더보기
import

 

반응형