Problem
https://www.acmicpc.net/problem/2750
Solution
정답 코드1
1
2
3
4
5
6
7
8
9
10
11
12
13
N = int(input())
numbers = []
for i in range(N) :
numbers.append(int(input()))
for i in range(1, len(numbers)) :
while (i>0) & (numbers[i] < numbers[i-1]) :
numbers[i], numbers[i-1] = numbers[i-1], numbers[i]
i -= 1
for n in numbers :
print(n)
line1과 line5의 int(input())은 다르다.
오답 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
N = int(input())
n = []
for i in range(N) :
n.append(int(input()))
for i in range(N-1) :
for k in range(i+1,N) :
if n[i] > n[k] :
n[i] , n[k] = n[k] , n[i]
k -= 1
else : continue
for n in n:
print(n)
위 코드는 bubble sort 방식으로 정렬하는 것을 의사코드로 만들고 나서 실제 코드로 변환한 것인데, 551324를 입력하면 51324를 출력했다. 디버깅을 해보니 for i in range(N-1):루프에서 k에 -1을 적용해도 다음 반복때 2가 증가한다는 사실을 알게됐다.
정답 코드2
1
2
3
4
5
6
7
8
9
10
N = int(input())
n = []
for i in range(N) :
n.append(int(input()))
n = sorted(n)
for i in range(N):
print(n[i])
위 코드의 중간부분을 한줄로 줄였다.