지나가던 개발자

[Python] 백준 10814번(나이순 정렬) 문제 풀이 본문

PS/Python

[Python] 백준 10814번(나이순 정렬) 문제 풀이

KwonYongHyeon 2022. 2. 19. 14:57

 

 그저 단순한 정렬 문제인 것 같다.

 

members = []
for i in range(int(input())):
    members.append(input().split())
age = []
for m in members:
    age.append(int(m[0]))
age = sorted(age)
for i in range(len(age)):
    j = 0
    while True:
        if members[j][0] == str(age[i]):
            break
        j += 1
    print(age[i], members[j][1])
    del members[j]

 

 이렇게 짜니 시간 초과가 떴다. 하긴 N이 100000까지인데 100000짜리가 들어온다면 반복문을 엄청나게 돌려야 하니...

 

 그래서 이번에는 다른 블로그를 참고해서 이렇게 코드를 짜봤다.

 

members = []
for i in range(int(input())):
    members.append(input().split())
members.sort(key=lambda x:x[0])
for m in members:
    print(m[0], m[1])

 

 "리스트명.sort(key=lambda x:x[0])"는 2차원 배열을 첫번째 요소 값을 기준으로 정렬해준다. 근데 이렇게 짰더니 틀렸다고 떴다. 생각을 해보니, 위 코드에서는 members[i][0] 요소가 문자열이었다... 이런 실수를 하다니.

 

members = []
for i in range(int(input())):
    member = input().split()
    member[0] = int(member[0])
    members.append(member)
members.sort(key=lambda x:x[0])
for m in members:
    print(m[0], m[1])

 

 이렇게 바꾸어 주니 맞았다. 생각보다 어려운 문제였다.

Comments