Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

행복한 개구리

백준 21.12.30. 2750번 - 수 정렬하기 본문

Algorithm/BaekJoon

백준 21.12.30. 2750번 - 수 정렬하기

HappyFrog 2021. 12. 31. 00:14

N = int(input())

arr = set()
for _ in range(N):
    arr.add(int(input()))
arr = list(arr)
arr.sort()

for i in arr:
    print(i)
  • set의 요소는 중첩되지 않는다는 성질을 이용하여 풀었습니다.

 

거품정렬(Bubble Sort)

Bubble Sort - Wikipedia

N = int(input())

arr = []
for _ in range(N):
    arr.append(int(input()))

for i in range(len(arr)):
    for j in range(len(arr)):
        if arr[i] < arr[j]:
            arr[i], arr[j] = arr[j], arr[i]

for i in arr:
    print(i)
  • 중첩반복문을 통해 배열의 처음부터 끝까지 모두 탐색합니다.
  • 지정한 수( arr[i] )와 배열안의 다른 수( arr[j] )를 모두 비교합니다.
    • 만약 arr[i]가 arr[j]보다 작다면 arr[i]의 자리는 arr[j]로 대체되고 arr[j]는 arr[i]로 대체됩니다.
    • 배열안에 존재하는 i+1 개수 만큼의 가장 큰 값들이 0인덱스부터 오름차순으로 정렬됩니다.
      ▲ 리스트의 변화

삽입정렬(Insertion Sort)

Insertion Sort - Wikipedia

N = int(input())

arr = []
for _ in range(N):
    arr.append(int(input()))
n = 0

for i in range(1, len(arr)):
    while (i > 0) & (arr[i] < arr[i-1]):
        arr[i], arr[i-1] = arr[i-1], arr[i]

        i -= 1

for i in arr:
    print(i)
  • for, while 반복문을 중첩으로 사용합니다.
  • for문으로 arr에서의 지정한 기존 인덱스(i)에 해당하는 값을 이전 인덱스(i-1)의 값과 비교해줍니다.
    • 만약 이전 인덱스(i-1)의 값이 크다면 두 인덱스의 값을 서로 치환하여 오름차순에 맞게끔 정렬해줍니다.
    • 정렬이 1회 끝났다면 i를 -1하여 내가 치환시킨 이전 인덱스(i-1)의 값이 그 이전인덱스의 값(i-2)과 비교하여 정렬해줍니다.
    • 그리고 i가 0이 된다면 i-1인덱스는 존재하지 않으므로 오류가 나기때문에 while문의 조건에 i>0이라는 조건이c 추가적으로 달려있습니다.
  • 이를 반복한다면 오름차순으로 정렬된 리스트가 반환됩니다.