본문 바로가기

C++/코드트리

[코드트리] 초기 수열 복원하기

https://www.codetree.ai/missions/5/problems/restore-initial-sequence?&utm_source=clipboard&utm_medium=text 

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

 

이건 너무 무식하게 풀려고 해서 ,, 해설을 참조하였다.

첫 숫자가 정해지면 뒤로 주르륵 숫자가 정해지니 전부 1번씩 사용했는지만 체크해주면 된다!

 

#include <iostream>
using namespace std;
int n, map[1000], answer[1000];
int main() {
    cin >> n;
    for(int i=0; i<n; i++)  
        cin >> map[i];

    // 첫 숫자 정하기
    for(int i=1; i<=n; i++){
        answer[0] = i;
        int dat[1001] = {0, }, flag = 0;
        dat[i] = 1;
        for(int j=0; j<n-1; j++){
            answer[j+1] = map[j] - answer[j];
            if(answer[j+1] < 0 || answer[j+1] > n) break;
            dat[answer[j+1]]++;
        }

        for(int j=1; j<=n; j++){
            if(dat[j] != 1) flag = 1;
        }
        if(flag == 0){
            for(int j=0; j<n; j++)
                cout << answer[j] << ' ';
            return 0;
        }
    }
    return 0;
}

'C++ > 코드트리' 카테고리의 다른 글

[코드트리 챌린지] 1주차 실력진단  (0) 2023.09.11
인증용 테스트 글  (0) 2023.09.02
[코드트리] 이상한 폭탄3  (0) 2023.08.29
[코드트리] 독서실의 거리두기 4  (0) 2023.08.25
[코드트리] A, B, C, D 찾기 2  (0) 2023.08.25