반응형
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 << ' ';
}
'Algorithm > Sorting' 카테고리의 다른 글
(C++) - 백준(BOJ) 10825번 : 국영수 답 (0) | 2021.05.01 |
---|---|
(C++) - 백준(BOJ) 1744번 : 수 묶기 (0) | 2021.04.26 |
(C++) - 백준(BOJ) 1926번 : 수 정렬하기 5 (0) | 2021.03.14 |
(C++) - 프로그래머스(연습문제) : 문자열 내 마음대로 정렬하기 (0) | 2021.03.02 |
(C++) - 프로그래머스(고득점 kit - 정렬) : H-index 답 (0) | 2021.02.16 |