백준 5635

soss·2022년 11월 1일
0

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차원 배열을 이용한 인덱스 접근

profile
안녕하세요. 복습 목적으로 문제 풀이를 올리고 있습니다.

0개의 댓글