[백준] 23349 - 졸업사진
2024. 5. 12. 11:56ㆍPS/백준
728x90
# 문제 조건 잘 보자!
import sys
N = int(sys.stdin.readline())
name_table = dict()
flight_table = dict()
extracted_table = dict()
max_number = 0
for _ in range(N):
name, flight, time_s, time_e = sys.stdin.readline().split()
if name not in name_table:
name_table[name] = [flight, [int(time_s), int(time_e)]]
if flight_table.get(flight) == None:
flight_table[flight] = [0 for _ in range(50001)]
# 어떻게 겹치는 것을 표현할 것 인가? -> 시간들을 돌면서 하나씩 더해줌
for num in range(name_table[name][1][0], name_table[name][1][1]):
flight_table[flight][num] += 1
for k, v in flight_table.items():
if max(v) >= max_number:
max_number = max(v)
extracted_table[k] = v
# 일단 이전 시간의 최댓값보다 많은 비행기들을 모두 선택한 후, 배열의 최댓값으로 정렬하고, 비행기 이름대로 정렬함
# 같은 이름일 때 뒤에 시간에 일어나더라도 많은 시간대를 어떻게 선택할 것인가 ? -> 최댓값으로 선택해주니 상관 없음
k = sorted(extracted_table.items(), key = lambda x: (-max(x[1]), x[0]))[0][0]
# 가장 빠른 시간대를 출력해주어야함
for ind in range(50001):
if extracted_table[k][ind] == max_number:
time_s = ind
break
for ind in range(time_s, 50001):
if extracted_table[k][ind] != max_number:
time_e = ind
break
result = [k, time_s, time_e]
print(' '.join(map(str, result)))
'PS > 백준' 카테고리의 다른 글
[백준] 1379 - 강의실 2 (0) | 2024.05.22 |
---|---|
[백준] 25918 - 북극곰은 괄호를 찢어 (0) | 2024.05.15 |
[백준] 1374 - 강의실 (0) | 2024.05.14 |
[백준] 27968 - 사사의 사차원 사탕봉지 (0) | 2024.05.09 |
[백준] 19238 - 스타트 택시 (0) | 2024.02.25 |