본문 바로가기

Algorithm/프로그래머스

프로그래머스 n^2 배열 자르기 C++

반응형

프로그래머스 : n^2 배열 자르기

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


- 문제

  문제와 같이 배열이 주어지면 배열을 자르는 문제다.

 


- 풀이

#include <string>
#include <vector>

using namespace std;

vector<int> solution(int n, long long left, long long right) {
    vector<int> answer;
    answer.reserve(100001);
    
    for(long long i = left; i < right + 1; i++){
        if(i / n > i % n){
            answer.push_back(i/n+1);
        }
        else{
            answer.push_back(i%n+1);
        }
    }
    // copy(temp.begin() + left, temp.begin() + right + 1, back_inserter(answer));
    // answer.assign(temp.begin() + left, temp.begin() + right + 1);
    return answer;
}

 

 

배열을 자르면  / 이거와 % 이거로 모든 답을 구할 수 있다는 것을 알 수 있다.

 

이건 따로 식을 어떻게 구했는지는 모르겠고 직접 종이에 써서 해보니 이렇게 됐다.

 

  


- 기억할 것!

 문제가 long long을 주는데 계속 for(int i = left) 이렇게 해서 시간 초과가 떴었다.

 

문제가 틀림이 아니고 시간초과여서 이 부분을 계속 간과했기에 1시간 가량 이 문제를 풀게 되었다.

반응형

'Algorithm > 프로그래머스' 카테고리의 다른 글

프로그래머스 기능개발 C++  (0) 2022.10.22
프로그래머스 위장 C++  (0) 2022.10.22
프로그래머스 튜플 C++  (0) 2022.10.22
프로그래머스 행렬의 곱셈 C++  (0) 2022.10.22
프로그래머스 H-Index C++  (0) 2022.10.22