-
[Python] ๋ฐฑ์ค 19583 ์ธ์ด๋ฒ๊ฐ๊ฐ์ดํ (Set)๐ป Algorithm/Python 2022. 7. 2. 15:27
๐ ๋ฌธ์
๋ณด์์ด๋ ์๊ณ ๋ฆฌ์ฆ ๋์๋ฆฌ HI-ARC๋ฅผ ์ด์ํ๊ณ ์๋ค.
๋ณด์์ด์ ์ด์์ง ์ผ๋์ 20๋ ๋์ ์ ํํ๋ ์ ์ ์๋ค์ ๋ง์ดํ๊ธฐ ์ํด ์ด์ฌํ ์ค๋น๋ฅผ ํด์์ผ๋, ์ ์ผ๋ณ์ ์ ํ์ด ์ ํ๋ ๋๋จธ์ง ์ ๋ถ์์๋ “์ฌํ์ ๊ฑฐ๋ฆฌ๋๊ธฐ”๋ฅผ ์ ์ธํ๊ณ ๊ทธ์ ๋ฐ๋ผ ํ๊ต์์๋ ๊ต๋ด ๋ชจ๋ ๋์๋ฆฌ์ ์คํ๋ผ์ธ ๋ชจ์์ ์์ ํ๋ผ๋ ๊ณต์ง๋ฅผ ํ๊ธฐ์ ์ด๋ฅด๋ ๋ค. ์คํ๋ผ์ธ์์ ๋ชจ์์ ์์ ํ๋ผ๋ ๊ถ๊ณ ๊ฐ ๋์จ ์ด๋ ค์ด ์ํฉ์๋ ๋ถ๊ตฌํ๊ณ , ๋ณด์์ด๋ ๊ธฐ์ง๋ฅผ ๋ฐํํ์ฌ ๊ฐ๊ฐ์ดํ๋ฅผ ๋ฏธํ๋ธ ์คํธ๋ฆฌ๋ฐ์ผ๋ก ๋์ฒดํ๋ ๊ฒฐ์ ์ ํ๊ฒ ๋๋ค.
ํ์ง๋ง, ๋ฏธํ๋ธ ์คํธ๋ฆฌ๋ฐ์ผ๋ก ๊ฐ๊ฐ์ดํ๋ฅผ ํ๊ฒ ๋ ๊ฒฝ์ฐ, ์๋์ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์๋ค.
๋๊ฐ ๊ฐ๊ฐ์ดํ์ ์๋์ง ์ ์ ์๋ค.
๋๊ฐ ๊ฐ๊ฐ์ดํ ์๋ฆฌ์ ๋๊น์ง ๋จ์์์๋์ง ์ ์ ์๋ค.
์ด๋ค ์ฌ๋์ด ๊ฐ๊ฐ์ดํ ์คํธ๋ฆฌ๋ฐ์ ๋จ์ํ ํ์ด๋๊ธฐ๋ง ํ๋์ง ์ ์ ์๋ค.
์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์, ๋ค์๊ณผ ๊ฐ์ด ์ถ์๋ถ๋ฅผ ๊ด๋ฆฌํ๊ธฐ๋ก ๊ฒฐ์ฌํ๋ค.๊ฐ๊ฐ์ดํ๋ฅผ ์์ํ๊ธฐ ์ ์, ํํ์์ ์ ์ฅ ํ์ธ ์ฌ๋ถ๋ฅผ ํ์ธํ๋ค. ํํ์์ ์ ์ฅ ์ฌ๋ถ๋ ๊ฐ๊ฐ์ดํ๊ฐ ์์ํ ์๊ฐ ์ด์ ์ ๋ํ๋ฅผ ํ ์ ์ด ์๋ ํํ์์ ๋๋ค์์ ๋ณด๊ณ ์ฒดํฌํ๋ค. ๊ฐ๊ฐ์ดํ๋ฅผ ์์ํ์๋ง์ ์ฑํ ๊ธฐ๋ก์ ๋จ๊ธด ํํ์๋ ์ ์๊ฐ์ ์ ์ฅ์ด ํ์ธ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ๋ค.
๊ฐ๊ฐ์ดํ๋ฅผ ๋๋ด๊ณ ๋์, ์คํธ๋ฆฌ๋ฐ์ ๋๋ผ ๋๊น์ง ํํ์์ ํด์ฅ ํ์ธ ์ฌ๋ถ๋ฅผ ํ์ธํ๋ค. ํํ์์ ํด์ฅ ์ฌ๋ถ๋ ๊ฐ๊ฐ์ดํ๊ฐ ๋๋๊ณ ์คํธ๋ฆฌ๋ฐ์ด ๋๋ ๋๊น์ง ๋ํ๋ฅผ ํ ์ ์ด ์๋ ํํ์์ ๋๋ค์์ ๋ณด๊ณ ์ฒดํฌํ๋ค. ๊ฐ๊ฐ์ดํ๊ฐ ๋๋์๋ง์ ์ฑํ ๊ธฐ๋ก์ ๋จ๊ฒผ๊ฑฐ๋, ๊ฐ๊ฐ์ดํ ์คํธ๋ฆฌ๋ฐ์ด ๋๋์๋ง์ ์ฑํ ๊ธฐ๋ก์ ๋จ๊ธด ํํ์๋ ์ ์๊ฐ์ ํด์ฅ์ด ํ์ธ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ๋ค.
๋จ, 00:00๋ถํฐ๋ ๊ฐ๊ฐ์ดํ๋ฅผ ์์ํ๊ธฐ ์ ์ ๋๊ธฐ ์๊ฐ์ด๋ฉฐ, ๊ฐ๊ฐ์ดํ ์คํธ๋ฆฌ๋ฐ ๋๋ ์๊ฐ ์ดํ๋ก ๋จ๊ฒจ์ ธ ์๋ ์ฑํ ๊ธฐ๋ก์ ๋ค๋ฅธ ์คํธ๋ฆฌ๋ฐ ์์์ ์ฑํ ๊ธฐ๋ก์ผ๋ก ๊ฐ์ฃผํ๋ค.์ด ๋, ์ ์ฅ๋ถํฐ ํด์ฅ๊น์ง ๋ชจ๋ ํ์ธ๋ ํํ์์ ์ ๋ถ ๋ช ๋ช ์ธ๊ฐ?
์ ๋ ฅ
์ฒซ๋ฒ์งธ ์ค์๋ ๊ฐ๊ฐ์ดํ๋ฅผ ์์ํ ์๊ฐ S, ๊ฐ๊ฐ์ดํ๋ฅผ ๋๋ธ ์๊ฐ E, ๊ฐ๊ฐ์ดํ ์คํธ๋ฆฌ๋ฐ์ ๋๋ธ ์๊ฐ Q๊ฐ ์ฃผ์ด์ง๋ค. (00:00 ≤ S < E < Q ≤ 23:59) ๊ฐ ์๊ฐ์ HH:MM์ ํ์์ผ๋ก ์ฃผ์ด์ง๋ค.
๋๋ฒ์งธ ์ค๋ถํฐ๋ HI-ARC์์ ๋ฐฉ์กํ๋ ์คํธ๋ฆฌ๋ฐ ์์์ ์ฑํ ๊ธฐ๋ก๋ค์ด ์๊ฐ์์ผ๋ก ์ฃผ์ด์ง๋๋ฐ, (์๊ฐ) (ํํ์ ๋๋ค์)์ ํํ๋ก ์ฃผ์ด์ง๋ค. ํํ์์ ๋๋ค์์ ์ํ๋ฒณ ๋์๋ฌธ์์ ์ซ์, ๊ทธ๋ฆฌ๊ณ ํน์ ๊ธฐํธ(., _, -)๋ก๋ง ๊ตฌ์ฑ๋ ๋ฌธ์์ด์ด๋ฉฐ ์ต๋ 20๊ธ์์ด๋ค.
๋ชจ๋ ์ฑํ ๊ธฐ๋ก์ ๊ฐ๊ฐ์ดํ๊ฐ ์ผ์ด๋ ๋ ์ ๋ฐ์ํ ์ฑํ ๊ธฐ๋ก์ด๋ค. ์ฆ 00:00~23:59์ ์๊ฐ๋ง ์ฃผ์ด์ง๋ค. ์ฑํ ๊ธฐ๋ก์ 10๋ง ์ค์ ๋์ง ์๋๋ค.
์ถ๋ ฅ
์ถ์์ด ํ์ธ๋ ํํ์์ ์ธ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
22:00 23:00 23:30
21:30 malkoring
21:33 tolelom
21:34 minjae705
21:35 hhan14
21:36 dicohy27
21:40 906bc
23:00 906bc
23:01 tolelom
23:10 minjae705
23:11 hhan14
23:20 dicohy27์์ ์ถ๋ ฅ 1
5
์์ ์ ๋ ฅ 2
06:00 12:00 18:00
06:00 shinyo17
06:00 kimchist
06:00 swoon
06:00 kheee512
06:00 Green55
09:00 kimchist
11:59 shinyo17
12:00 kimchist
17:59 swoon
17:59 swoon
18:00 kheee512
18:01 swoon
18:01 Green55
18:01 kheee512
18:01 swoon
18:21 jinius36
18:40 jeongyun1206์์ ์ถ๋ ฅ 2
3
๐ ํ์ด
import sys input = sys.stdin.readline start, end, stream = input().split() start = int(start[:2] + start[3:]) end = int(end[:2] + end[3:]) stream = int(stream[:2] + stream[3:]) attend = set() cnt = 0 while True: try: time, name = input().split() time = int(time[:2] + time[3:]) if time <= start: attend.add(name) elif end <= time <= stream and name in attend: attend.remove(name) cnt += 1 except: break print(cnt)
- start: ๊ฐ๊ฐ์ดํ ์์ ์๊ฐ
- end: ๊ฐ๊ฐ์ดํ ์ข ๋ฃ ์๊ฐ
- stream: ๊ฐ๊ฐ์ดํ ์คํธ๋ฆฌ๋ฐ ์ข ๋ฃ ์๊ฐ
- attend: ์ถ์๋ถ
- time: ์ฑํ ์๊ฐ
- name: ์ฑํ ์์ฑ์
input ๊ฐ์๋ฅผ ๋ชจ๋ฅผ ๋ ์ ๋ ฅ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ
while True: try: time, name = input().split() except: break
while True๋ฌธ์ผ๋ก ์ ๋ ฅ์ ๊ณ์ ๋ฐ๋ค๊ฐ EOF๋ฅผ ๋ง๋ ์๋ฌ๊ฐ ๋ฐ์ํ ๋ except๋ฌธ์ผ๋ก ์บ์นํด break๋ก ์ ๋ ฅ์ ์ค๋จ์์ผ์ค๋๋ค.
list์ set์ ์๋ ์ฐจ์ด
(์ฒซ ์๋)
attend๋ฅผ list๋ก ๋ง๋ค๊ณ append๋ก ์ถ๊ฐ, remove๋ก ์ญ์ ํ๋๋ ์๊ฐ์ด๊ณผ๊ฐ ๋ฌ์ต๋๋ค.(๋ค์ ์๋)
์ค๋ณต์ฒ๋ฆฌ๋ ํด์ค์ผ ํ๋๊น attend๋ฅผ set์ผ๋ก ๋ง๋ค์ด์ค๋ ๊ด์ฐฎ๊ฒ ๋ค๋ ์๊ฐ์ set์ผ๋ก ๋ฐ๊ฟ์ฃผ๊ณ add๋ก ์ถ๊ฐ, remove๋ก ์ญ์ ํ๋๋ ์ ๋ต์ฒ๋ฆฌ๋ฅผ ๋ฐ์์ต๋๋ค.์ด๋ป๊ฒ ๋ค๋ฅธ ๊ฑด์ง ๊ถ๊ธํด์ ์๊ฐ๋ณต์ก๋๋ฅผ ์ฐพ์๋ดค์ต๋๋ค.
- list ์๊ฐ๋ณต์ก๋
append: O(1)
remove: O(N)
- set ์๊ฐ๋ณต์ก๋
add: O(1)
remove: O(1)
์ฌ์ง์ถ์ฒ https://lsh424.tistory.com/59
'๐ป Algorithm > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค 1325 ํจ์จ์ ์ธ ํดํน (BFS) (0) 2022.07.02 [Python] ๋ฐฑ์ค 11725 ํธ๋ฆฌ์ ๋ถ๋ชจ ์ฐพ๊ธฐ (DFS) (0) 2022.07.02 [Python] ๋ฐฑ์ค 2594 ๋์ด๊ณต์ (๊ตฌํ) (0) 2022.07.02 [Python] ๋ฐฑ์ค 19638 ์ผํฐ์ ๋ง๋ฒ์ ๋ฟ ๋ง์น (Heapq) (0) 2022.07.02 [Python] ๋ฐฑ์ค 2841 ์ธ๊ณ์ธ์ ๊ธฐํ ์ฐ์ฃผ (Stack) (0) 2022.07.02