소트
문제 링크: https://www.acmicpc.net/problem/1083
성공
버블소트를 응용하여 배열을 정렬한다.
'소트한 결과가 사전순으로 가장 뒷서는 것을 출력한다.'
즉, 크기가 큰 순서대로 정렬하다가 s번 정렬 했을 시 해당 순서를 출력하라는 의미이다.
-
정답 코드
#include<iostream> using namespace std; #define maxNum 51 int n, s; int list[maxNum]; void sorting() { for (int i = 0; i < n && s; i++) { int max = list[i], maxIdx = i; int count = min(n, i + 1 + s); for (int k = i+1; k < count && s; k++) { if (max < list[k]) { if (max < list[k]){ max = list[k]; maxIdx = k; } } } s -= maxIdx - i; for (int k = maxIdx; k > i; k--) list[k] = list[k - 1]; list[i] = max; } } int main() { cin >> n; for (int i = 0; i < n; i++) cin >> list[i]; cin >> s; sorting(); for (int i = 0; i < n; i++) cout << list[i] << ' '; return 0; }
'ProblemSolving' 카테고리의 다른 글
[BOJ] 1715_카드 정렬하기 (0) | 2021.03.04 |
---|---|
[BOJ] 2697_다음수 구하기 (0) | 2021.03.04 |
[BOJ] 1322_X와 K (0) | 2021.02.27 |
에라토스테네의 체 (0) | 2021.02.26 |
[BOJ] 12865_평범한 배낭 (0) | 2021.02.25 |
최근댓글