본문 바로가기

파이썬/이것이 코딩 테스트다 with 파이썬

이코테 Chapter 05 정렬 - 위에서 아래로

문제

하나의 수열에는 다양한 수가 존재하며, 이런 큰 수는 크기와 상관 없이 무작위로 주어진다. 이 수를 큰수 부터 작은 수까지 내림차순으로 정렬하면되는 문제다. 즉 수열을 내림차순으로 정렬하는 프로그램을 만들면된다.

 

입력

  • 첫째 줄에 수열에 속해 있는 수의 개수 N이 주어진다. 이때 범위는 1 <= N <= 500
  • 둘째 줄부터 N + 1 번째 줄 까지 N개의 수가 입력된다. 수의 범위는 1 이상 100,000 이하 자연수

출력

  • 입력으로 주어진 수열이 내림차순으로 정렬된 결과를 공백으로 구분해서 출력하면된다. 동일한 수는 순서상관없다.

접근 & 풀이 (의식의 흐름)

1. 수열을 입력받고

2. 수의 범위가 1 ~ 100,000이니 선택정렬보단 삽입정렬로 내림차순으로 정렬하면 되겠군

 

 

소스 코드

n = int(input()) # 3

array = []

for _ in range(n): 
  array.append(int(input())) # [15, 27, 12]

# 선택 정렬
for i in range(len(array)):
  for j in range(i, 0, -1):
    if array[j] > array[j - 1]:
      array[j], array[j - 1] = array[j - 1], array[j]
    else:
      break

for i in range(len(array)):
  print(array[i], end = ' ') # 27, 15, 12

 

오답노트 & 알아낸 것

- 코드를 짜고 책에 있는 소스코드를 봤는데 그냥 기본 정렬 라이브러리를 이용해서 구현했더라... 그래도 공부했던 거를 복습하는 기분이라 좋았다