[BOJ] 10814 나이순 정렬

[BOJ] 10814 나이순 정렬

문제 링크

이 문제는 정렬 문제로, sort함수를 사용해서 풀이할 수 있었다.

하지만 주의해야할 것이 있었다.

문자열 정렬에서는 숫자의 크기와 관계없이 글자의 아스키코드 값을 기준으로 정렬을 한다.

숫자 정렬과는 다음과 같이 차이를 보인다.

array = ["1", "134","124","30"]
num_array = [1,134, 124, 30]
array.sort() # ["1", "124", "134", "30"]
num_array.sort() # [1, 30, 124, 134]

이 차이를 생각하기 전에는 다음과 같이 코드를 작성했다.

import sys
input = sys.stdin.readline

n = int(input())
array = []

for i in range(n):
  a, b = input().strip().split()
  array.append(a,i,b)) # i는 가입 순서를 저장하기 위함

array.sort()

for i in range(n):
  print(array[i][0] +" "+ array[i][2])

수정 후에는 다음과 같다.

  • 값을 넣어줄 때 string이 아닌 int형으로 형변환하여 배열에 append해줬다.

나의 풀이

import sys
input = sys.stdin.readline

n = int(input())
array = []

for i in range(n):
  a, b = input().strip().split()
  array.append((int(a),i,b)) # i는 가입 순서를 저장하기 위함

array.sort()

for i in range(n):
  print(str(array[i][0]) +" "+ array[i][2])

© 2021. All rights reserved.