https://www.acmicpc.net/problem/5635
n = int(input())
for _ in range(n):
name, day, month, year = input().split()
여기까지 짜놓고 고민이 됐다. 한번에 두가지만 입력받는 경우면 딕셔너리로 처리하면 되는데 한번에 네개의 입력을 받으면? 아무래도 리스트로 짜야겠지? 근데 리스트로 만든 다음에 어떻게 처리해야 할지를 몰랐다...
n = int(input())
students = []
for _ in range(n):
name, d, m, y = input().split()
d, m, y = map(int, (d, m, y))
students.append((y, m, d, name))
students.sort()
print(students[-1][3])
print(students[0][3])
✔️ 정수인 d, m, y는 map()을 이용해 한꺼번에 정수로 변환해준다.
✔️ 각 학생의 정보를 튜플 형태로 students 리스트 안에 저장해준다. 이때 정렬 함수를 이용해 나이가 적은/큰 사람을 찾을 것이기 때문에 year - month - day 순서로 나열해준다.
(sort 함수는 튜플의 첫번째 요소부터 비교한후, 같다면 다음 요소로 넘어가서 비교를 계속한다. 뒷순서의 요소를 기준으로 삼고 싶다면 key 파라미터를 이용하면 되지만 귀찮으니까 그냥 year를 맨 앞에 써준다.)
✔️ sort() 이후에는 인덱싱을 이용해 나이가 적은 사람, 큰 사람을 출력해준다.
sort()을 하면 오름차순 정렬되므로 출생연도가 클수록 (가장 최근인) 뒤쪽으로 정렬된다. 따라서 나이가 가장 적은 사람을 출력하려면 [-1][3]으로 지정해줘야 한다!
[-1] 맨 끝 요소[3] 튜플에서 인덱스 3이 이름