Notice
Recent Posts
Recent Comments
Link
나의 개발일지
[백준] 20440 🎵니가 싫어 싫어 너무 싫어 싫어 오지 마 내게 찝쩍대지마🎵 - 1 [Python, 파이썬] 본문
- 문제 : https://www.acmicpc.net/problem/20440
- 🔑 딕셔너리 key에 시간, value에 모기 마리 수 저장
- 딕셔너리 생성
- 들어온 시간 value값에는 모기 마리 수를 더한다.
- 나간 시간 value값에는 모기 마리 수를 뺀다.
- 정렬
- 딕셔너리 key, value 값으로 오름차순 정렬한다.
- 정렬된 리스트에서 최댓값 찾기
- 모기 마릿수를 순서대로 더해가면서 최댓값을 계속 업데이트한다.
- 마지막으로 업데이트된 인덱스와 시간을 저장
- 최댓값 인덱스 부터 모기가 모두 나간 시점 찾기
- value가 0 미만인 값을 찾으면 해당하는 시간 저장하고 브레이크
- 최댓값, 가장 많은 모기가 있는 시작 시간, 끝시간을 출력하면 끝 ✨
- 딕셔너리 생성
from collections import defaultdict
import sys
input = sys.stdin.readline
n = int(input())
mogi = defaultdict(int)
for _ in range(n):
i, o = map(int, input().split())
mogi[i] += 1 # 모기가 들어온 시간에 +1
mogi[o] -= 1 # 모기가 나간 시간에 -1
sort_mogi = sorted(mogi.items()) # 모기가 들어온 순서대로 정렬
cnt = 0 # 마리수 세는 변수
max_mogi = 0 # 최대 모기 수
start_idx = 0 # 최대 모기가 있는 시작 위치
start_time = sort_mogi[0][0] # 최대 모기가 있는 시작 시간
for i in range(len(sort_mogi)):
cnt += sort_mogi[i][1] # i번 시간까지 들어온 모기의 마리 수를 구함
if max_mogi < cnt:
max_mogi = cnt # 최댓값 업데이트
start_idx = i # 시작 인덱스
start_time = sort_mogi[i][0] # 시작 위치 시간
end_time = sort_mogi[-1][0] # 최대 모기가 있는 끝 시간
for i in range(start_idx, len(sort_mogi)): # 최대 모기가 있는 위치부터 시작
if sort_mogi[i][1] < 0: # 모기가 모두 나갔으면
end_time = sort_mogi[i][0] # 끝 위치 인덱스
break
print(max_mogi)
print(start_time, end_time)
'백준' 카테고리의 다른 글
[Python] schedule 모듈 (0) | 2023.12.18 |
---|---|
[백준] 21939 문제 추천 시스템 Version1 [Python, 파이썬] (0) | 2023.12.14 |
[백준] 24337 가희와 탑 [Python, 파이썬] (1) | 2023.12.08 |
[백준] 1436 영화감독 숌 [Python, 파이썬] (1) | 2023.12.03 |
[백준] 17299 오등큰수 [Python, 파이썬] (0) | 2023.12.01 |
Comments