어려운 문제를 푸려다가, 모르는 알고리즘에 부딫혀 한동안 쉬운 문제만 또 풀게되었다..ㅠㅠㅠ
이번에는 조금 어려운 문제 해설을 올리고 싶었으나, 우선은 ACM 기출문제 (이것도 정답률 높은 문제) 를 올린다.
줄세우기는 같은 이름의 다양한 문제가 많은데, 이번 문제의 경우 기본 규칙? 정도만 알면 쉽게 접근할 수 있는 문제이다.
우선 현재 자신의 위치보다 앞에 키가 큰 학생이 있다면 바꾸어주어야 하기 때문에 정렬알고리즘을 생각하면 비교적 짧은 코드에
구현 가능할 것이라 생각한다.
<소스코드>
#include <cstdio>
int T,num[21],N;
int main() {
scanf("%d", &T);
while(T--){
int sum = 0;
scanf("%d", &N);
for (int i = 0; i < 20; i++) scanf("%d", num + i);
for (int i = 1; i < 20; i++) {
for (int j = 0; j < i; j++) {
if (num[j] > num[i]) sum++;
}
}
printf("%d %d\n",N,sum);
}
return 0;
}
'매일 알고리즘 2문제' 카테고리의 다른 글
| 2294 동전2 (0) | 2018.02.21 |
|---|---|
| 2293 동전1 (0) | 2018.02.20 |
| 1002 터렛 (0) | 2018.02.07 |
| 10426 기념일2 (0) | 2018.02.07 |
| 3231 카드놀이 (0) | 2018.02.07 |