본문 바로가기

Algorithm/Sorting

(C++) - 백준(BOJ) 1015번 : 수열 정렬 답

반응형

www.acmicpc.net/problem/1015

 

1015번: 수열 정렬

P[0], P[1], ...., P[N-1]은 0부터 N-1까지(포함)의 수를 한 번씩 포함하고 있는 수열이다. 수열 P를 길이가 N인 배열 A에 적용하면 길이가 N인 배열 B가 된다. 적용하는 방법은 B[P[i]] = A[i]이다. 배열 A가 주

www.acmicpc.net

stl sort를 이용해 푼 brute force문제였습니다.

 

풀이방법

 1. 입력받은 수를 오름차순으로 정렬합니다.

 2. 정렬한 후 각 수가 어디로 이동했는지 원래 배열과 정렬된 후의 배열을 비교해 찾았다면 해당 index를 넣어줍니다. 이 때 같은 수가 계속해서 있을 수 있으므로 해당 index를 check했다는 의미로 1로 만들어주어 같은 index를 정답으로 넣는 것을 방지합니다.

 3. 정답 출력

 

Code

#include <bits/stdc++.h>
using namespace std;
int n;
int a[1001],b[1001],ck[1001];
vector <int> answer;
int main(){
    cin >> n;
    for(int i = 0; i < n; i++) {
        cin >> a[i];
        b[i] = a[i];
    }
    sort(b,b + n);
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            if(a[i] == b[j] && !ck[j]){
                ck[j] = 1;
                answer.push_back(j);
                break;
            }
        }
    }
    for(auto p : answer) cout << p << ' ';
}