미소를뿌리는감자의 코딩
[백준 2024/02/22] 10814번 나이순 정렬 본문
728x90
https://www.acmicpc.net/problem/10814
1. 접근 방법
client에 대한 정보들을 순서대로 입력을 받은 후, 나이를 기준으로 정렬하면 된다.
나이가 같을 경우, 가입한 순으로 출력하는 조건에 대해서는 딱히 신경을 써주지 않아도, 가입한 순으로 list에 넣었기 때문에 괜찮다.
하지만 신경이 조금 쓰이다면
unsorted_list = []
for i in range(int(input())):
unsorted_list.append(list(input().split()+[i]))
unsorted_list.sort(key=lambda x: (int(x[0]), x[2]))
for age, name, i in unsorted_list:
print("{} {}" .format(age, name))
이런식으로 입력 받을 때, 저장해 두었던 순서를 이용해서, key의 두 번째 조건으로 넣어두어도 좋다.
하나 더 유의할 점은, int(x[0]) 을 해주어야 한다는 점이다.
만약 한 자리수라면, 별로 결과에 영향을 주지 않을 수 있어도 문자열인 '10 '9'를 비교하게 된다면 '9'가 더 뒤에 출력될 것이기 때문이다.
아래 코드로 확인할 수 있다.
test_list = ['10', '9']
test_list.sort()
print(test_list)
## 출력: ['10', '9']
1과 9를 먼저 비교했을 때, 1이 작다고 판단, 바로 10을 9 보다 앞에 두게 된다.
* 따라서 항상 수를 비교해서 sort()를 하고자 할 때, 숫자로 형변환이 완료 되었는지 꼭 확인해야 한다.
2. 코드
def input_client(unsorted_list):
for i in range(int(input())):
unsorted_list.append(list(input().split()))
def sort_client(unsorted_list):
unsorted_list.sort(key=lambda x: int(x[0]))
def print_client(sorted_list):
for client in sorted_list:
print(' '.join(client))
def main():
unsorted_list = []
input_client(unsorted_list)
sort_client(unsorted_list)
print_client(unsorted_list)
if __name__ == '__main__':
main()
728x90
'코딩 테스트 > 백준' 카테고리의 다른 글
[백준 2024/02/22] 5052번 전화번호 목록 (1) | 2024.02.22 |
---|---|
[백준 2024/02/22] 2108번 통계학 (0) | 2024.02.22 |
[백준 2024/02/22] 2751번 수 정렬하기 2 (0) | 2024.02.22 |
[백준 2024/02/21] 1011번 Fly me to the Alpha Centauri - python ver. (1) | 2024.02.21 |
[백준 2024/02/21] 14534번 String Permutation (0) | 2024.02.21 |