Home [Python] 백준 2750번 : 수 정렬하기
Post
Cancel

[Python] 백준 2750번 : 수 정렬하기

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])

위 코드의 중간부분을 한줄로 줄였다.

This post is licensed under CC BY 4.0 by the author.

[Python] 백준 2438번 : 별 찍기 - 1

[Python] 백준 1920번 : 수 찾기