문제
https://www.acmicpc.net/problem/18870
18870번: 좌표 압축
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표 Xj의 개수와 같아야 한다. X1, X2, ..., XN에
www.acmicpc.net
답
시행착오
N = int(input())
A = list(input().split() for _ in range(N))
A.sort(key=lambda x: (x[0]))
for i in A:
print(i[0],i[1])
sort 함수를 사용할 때 lambda 함수에서 정렬 기준으로 사용된 x[0]이 문자열로 처리되고 있음을 확인할 수 있습니다.
백준 10814번 문제에서는 나이를 기준으로 사용자를 정렬해야 하는데, 입력받은 나이가 문자열로 처리되어 정수형으로 변환되지 않았습니다.
이는 나이를 비교할 때 알파벳 순서대로 비교가 이루어져 원하는 대로 나이 순서대로 정렬되지 않는 원인이 됩니다.
예를 들어, 나이가 '2'와 '10'인 두 사람이 있다면, 문자열로 비교할 경우 '10'이 '2'보다 앞에 옵니다. 그러나 나이를 기준으로 올바르게 정렬하려면 '2'가 '10'보다 앞에 와야 합니다. 따라서, 입력받은 나이를 정수형으로 변환하는 과정이 필요합니다.
답
import sys
input = sys.stdin.readline
N = int(input())
A = list(input().split() for _ in range(N))
A.sort(key=lambda x: int(x[0]))
for i in A:
print(i[0],i[1])
- 나이가 증가하는 순
- 먼저가입한 순
'백준' 카테고리의 다른 글
[백준 10815번] 숫자 카드 (파이썬) (0) | 2024.05.14 |
---|---|
[백준 18870번] 좌표 압축 (파이썬) (0) | 2024.04.06 |
[백준 1181번] 단어 정렬 (파이썬) (0) | 2024.03.17 |
[백준 11651번] 좌표 정렬하기 2 (파이썬) (0) | 2024.03.17 |
[백준 11650번] 좌표 정렬하기 (파이썬) (0) | 2024.03.16 |