minzzl

[백준] 10814번 : 나이순 정렬 - Python 본문

Algorithm

[백준] 10814번 : 나이순 정렬 - Python

minzzl 2022. 12. 1. 11:38
728x90
반응형
문제

 

https://www.acmicpc.net/problem/10814

 

풀이

 

문제를 보자마자 들었던 생각은 .. 아 딕셔너리로 풀어야겠다! 였습니다.

그러나 .. 생각치 못했던 복병이... 있었습니다..

딕셔너리 자료구조의 경우 key 값의 중복이 있을 경우 value 값이 새로 들어온 값으로 덮어씌여져 버립니다..

그래서 나이를 key값으로 두든, 이름을 key 값으로 두든 중복이 발생할 경우 다른 입력임에도 불구하고 .. 덮어쓰여져 버려 계속 문제를 틀려버리는 것이었습니다 ..

 

거두절미하고, 이를 해결하는 방법은 생각보다 간단했습니다. 

그냥 입력 받는 key 값을 각각의 객체로 만들어버리면 key 가 중복 되더라도 새롭게 딕셔너리에 값을 할당할 수 있습니다!

 

코드

 

import sys
class person(object):
    def __init__(self,name):
        self.name = name

    def __str__(self):
        return self.name

    def __repr__(self):
        return "'"+self.name+"'"



n = int(sys.stdin.readline())
dic = {}



for i in range(n):
    temp = sys.stdin.readline().strip().split()
    dic[person(temp[1])] = int(temp[0])
    

dic_sort = sorted(dic.items(), key=lambda x:x[1])

for key, value in dic_sort:
    print(value, key)

 

728x90
반응형