https://www.acmicpc.net/problem/5635
n = int(input())
p_list2 = []
num = 0
num_list = []
for i in range(n):
p_list = list(map(str, input().split()))
p_list2.append(p_list)
for i in range(n):
num += int(p_list2[i][1]) * 1
num += int(p_list2[i][2]) * 10
num += int(p_list2[i][3]) * 100
num_list.append([])
num_list[i].append(num)
num_list[i].append(i)
num = 0
num_list.sort()
print(p_list2[num_list[-1][1]][0])
print(p_list2[num_list[0][1]][0])
처음 생각했던 풀이는 2차원 배열을 이용해서 년도를 기준으로 정렬한 뒤에 가장 낮은 년도와 다른 행들을 삭제하는 것이였다. 년도, 월, 일 순으로 하면 될 거라 생각했는데 문제를 다시 보니 생일이 가장 빠른 사람과 가장 느린 사람을 구하는 것이였다. 내가 생각한 풀이를 사용하게 되면 생일이 가장 빠른 사람을 구하기 위해 정리된 p_list2를 다시 입력받아야 한다고 생각했다. (근데 문제를 풀고 나서 보니 p_list2와 똑같은 p_list3를 만들어서 해도 될 것 같긴 하다)
다른 풀이를 생각하던 중에 예제를 계속 보고 있다가 숫자들(년, 월, 일)을 이용해서 풀고 싶다는 생각이 들었다. 어떻게 하면 년도, 월, 일로 가장 빠른, 느린 사람을 구할 수 있을까 하다가 비교 순서를 기준으로 수를 곱하면 될 것 같았다. 코드에서 곱한 수는 임의로 정한 숫자지만 년도는 100, 월은 10, 일은 1과 같이 가장 먼저 비교하는 년도에 가장 큰 수를 곱해주었다.
2차원 배열을 이용한 인덱스 접근