-
[Python] ๋ฐฑ์ค 2594 ๋์ด๊ณต์ (๊ตฌํ)๐ป Algorithm/Python 2022. 7. 2. 15:23
๐ ๋ฌธ์
๋์ด๊ณต์์์ ์ฌ๋ฌ ๊ฐ์ ๋์ด๊ธฐ๊ตฌ๋ฅผ ๋งก์ ์ผํ๋ ์ธํ์ด์ ๊ทผ์์ด๋ ์๋ก ์ข์ํ๋ ์ฌ์ด์ด๋ค. ๊ทธ๋ค์ ์ฌ๋ ์๊ฐ์ ์ด์ฉํ์ฌ ๋๋ง์ ์๊ฐ์ ๊ฐ์ง๊ธฐ๋ฅผ ์ํ๋ค. ๊ทธ๋์ ๋งค์ผ ์ผ๊ณผ ์์ ์ ์ ๋์ด๊ธฐ๊ตฌ์ ์ด์ ์ผ์ ์ ๋ณด๊ณ , ๊ทธ๋ ๋์ด ํจ๊ปํ ์ ์๋ ๊ฐ์ฅ ๊ธด ํด์์๊ฐ์ด ์ธ์ ์ธ์ง๋ฅผ ์ฐพ์ผ๋ ค๊ณ ํ๋ค.
๋์ด๊ณต์์์ ์ผํ๋ ๋ชจ๋ ์ฌ๋๋ค์ ์ด๋ค ๋์ด๊ธฐ๊ตฌ๊ฐ ์๋์ ์์ํ๊ธฐ 10๋ถ ์ ๋ถํฐ, ๋ชจ๋ ๋์ด๊ธฐ๊ตฌ๊ฐ ์๋์ ๋ฉ์ถ ํ 10๋ถ ํ๊น์ง๋ ์ด ์ ์๊ณ , ๊ทธ ๋๋จธ์ง ์ผ๊ณผ ์๊ฐ์๋ง ์ด ์ ์๋ค.
ํ๋ฃจ ์ผ๊ณผ๋ฅผ ์์ํ๋ ์๊ฐ์ ์ค์ 10์์ด๊ณ , ์ผ๊ณผ๋ฅผ ๋ง์น๋ ์๊ฐ์ ์คํ 10์์ด๋ค. ์๋ฅผ ๋ค์ด ์ธ ๊ฐ์ ๋์ด๊ธฐ๊ตฌ๊ฐ ์๋ํ๋ ์๊ฐ์ด ๋ค์๊ณผ ๊ฐ๋ค๊ณ ํ๋ฉด,
๋์ด๊ธฐ๊ตฌ 1: ์ค์ 10์ 30๋ถ - ์คํ 1์
๋์ด๊ธฐ๊ตฌ 2: ์คํ 7์ 00๋ถ - ์คํ 9์ 10๋ถ
๋์ด๊ธฐ๊ตฌ 3: ์คํ 12์ 30๋ถ - ์คํ 4์ 50๋ถ
์ธํ์ด์ ๊ทผ์์ด๋ ๋์ด๊ธฐ๊ตฌ 1์ด ์ดํ๋๊ธฐ ์ ์ 20๋ถ, ๋์ด๊ธฐ๊ตฌ 3์ ์ดํ์ด ๋๋๊ณ ๋์ด๊ธฐ๊ตฌ 2์ ์ดํ์์ ์ ์ฌ์ด์ 1์๊ฐ 50๋ถ, ๋์ด๊ธฐ๊ตฌ 2์ ์ดํ์ด ๋๋ ํ์ 40๋ถ ๋์ ์ด ์ ์๋ค. ๋ฐ๋ผ์ ๋์ด ํจ๊ปํ ์ ์๋ ๊ฐ์ฅ ๊ธด ์๊ฐ์ 1์๊ฐ 50๋ถ์ด๋ค.๋์ด๊ธฐ๊ตฌ ์ด์ ์ผ์ ์ด ์ฃผ์ด์ง ๋, ๊ทธ ๋ ์ธํ์ด์ ๊ทผ์์ด๊ฐ ํจ๊ปํ ์ ์๋ ๊ฐ์ฅ ๊ธด ์๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋์ด๊ธฐ๊ตฌ์ ๊ฐ์ N์ด ์ฃผ์ด์ง๋ค. ์ด์ด N์ค์ ๊ฑธ์ณ ๊ฐ ๋์ด๊ธฐ๊ตฌ์ ์ดํ์์ ์๊ฐ๊ณผ ์ข ๋ฃ ์๊ฐ์ด ๋น ์นธ์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋ค. ์๊ฐ์ ์๊ฐ๋จ์ ๋ ์๋ฆฌ, ๋ถ ๋จ์ ๋ ์๋ฆฌ๋ก ๊ตฌ์ฑ๋๋ฉฐ ์คํ 1์๋ 13์, ์คํ 2์๋ 14์, ... , ์คํ 10์๋ 22์๋ก ํํ๋๋ค. N์ 50์ดํ์ ์์ฐ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ธํ์ด์ ๊ทผ์์ด๊ฐ ํจ๊ปํ ์ ์๋ ๊ฐ์ฅ ๊ธด ์๊ฐ์ ๋ถ ๋จ์๋ก ์ถ๋ ฅํ๋ค. ๋ง์ฝ ํจ๊ปํ ์ ์๋ ์๊ฐ์ด ์๋ค๋ฉด ์ฒซ์งธ ์ค์ 0์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
3
1030 1300
1900 2110
1230 1650์์ ์ถ๋ ฅ 1
110
๐ ํ์ด
import sys input = sys.stdin.readline ride = [[600, 600], [1320, 1320]] for _ in range(int(input())): x, y = input().split() x = int(x[:2]) * 60 + int(x[2:]) - 10 y = int(y[:2]) * 60 + int(y[2:]) + 10 ride.append([x, y]) ride.sort() rest = 0 last = 600 for run, stop in ride: rest = max(rest, run - last) last = max(last, stop) print(rest)
์๊ฐ ํํ ๋ณํ
10์ 30๋ถ์ 1030, 21์ 10๋ถ์ 2110 ์ด๋ฐ ์์ผ๋ก ์ ๋ ฅ์ด ๋ค์ด์ค๊ณ , ๊ฐ์ฅ ๊ธด ํด์์๊ฐ์ ์ฐพ๊ธฐ ์ํด์๋ ์๊ฐ๋ผ๋ฆฌ ๋บ์ ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ๊ณ์ฐํ๊ธฐ ์ฝ๊ฒ ๋ฐ๊ฟ์ฃผ๋ ๊ฒ ์ข์ต๋๋ค.
0์ 0๋ถ์ 0์ผ๋ก ์ก๊ณ
10์ 30๋ถ → 10*60+30=630
22์ 00๋ถ → 22*60 = 1320
์๋ฐ ์์ผ๋ก ๋ณํํ๋๋ฐ, ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.# ์ ์งํ๊ฒ ๊ณ์ฐ (int('1030') // 100) * 60 + int('1030') % 100 # ์ฌ๋ผ์ด์ฑ ์ด์ฉ int('1030'[:2]) * 60 + int('1030'[2:])
์ ๋ ์ ์งํ ๊ณ์ฐ๋ฒ์ผ๋ก ํ์๋๋ฐ, ํ๊ณ ๋์ ๋ค๋ฅธ ๋ถ๋ค ํ์ด ๊ตฌ๊ฒฝํ๋ค๊ฐ ์๋ก์ด ๋ฐฉ๋ฒ์ด ์์ด ๊ทธ ๋ฐฉ๋ฒ์ผ๋ก ํฌ์คํ ํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
๋์ด๊ธฐ๊ตฌ ์ด์ ์ ํ๋ก 10๋ถ์ ์ค๋น์๊ฐ์ด ์์ผ๋ฏ๋ก ์์์๊ฐ์์ -10, ์ข ๋ฃ์๊ฐ์์ +10๊น์ง ํด์ฃผ๋ฉด ์๊ฐ ๋ณํ์ ๋์ ๋๋ค.
์ต๋ ํด์์๊ฐ ๊ณ์ฐ ๊ณผ์
- ์ผ๊ณผ ์์, ์ข ๋ฃ์๊ฐ์ธ 10์์ 22์๋ฅผ ๊ฐ๊ฐ [600, 600], [1320, 1320]์ผ๋ก ๋ฐฐ์ด์ ์ฝ์ ํฉ๋๋ค.
- ๋์ด๊ธฐ๊ตฌ์ ์์์๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋ฐฐ์ด์ ์ ๋ ฌํฉ๋๋ค.
- rest: ์ต๋ ํด์์๊ฐ (0์ผ๋ก ์ด๊ธฐํ)
last: ์์ ๋์ด๊ธฐ๊ตฌ ์ค ๊ฐ์ฅ ๋ฆ๊ฒ ๋๋๋ ๊ฒ์ ์ข ๋ฃ์๊ฐ
run: i๋ฒ์งธ ๋์ด๊ธฐ๊ตฌ์ ์์์๊ฐ
stop: i๋ฒ์งธ ๋์ด๊ธฐ๊ตฌ์ ์ข ๋ฃ์๊ฐ - run๊ณผ last๋ฅผ ๋น๊ตํฉ๋๋ค.
(1) run<last: ํด์์๊ฐ์ด ์๋ ๊ฒ์ด๋ฏ๋ก last์ stop์ ๋น๊ตํด์ ๋ ๋ฆ๊ฒ ๋๋๋ ๋์ด๊ธฐ๊ตฌ์ ์ข ๋ฃ์๊ฐ์ last๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
(2) run>last: ํด์์๊ฐ์ด ์๋ ๊ฒ์ด๋ฏ๋ก ํ์ฌ ์ต๋ ํด์์๊ฐ์ธ rest์ ์๋ก์ด ํด์์๊ฐ์ธ run-last๋ฅผ ๋น๊ตํด์ ๋ ํฐ ๊ฐ์ผ๋ก rest๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค. last๋ (1)๊ณผ ๊ฐ์ด ๋น๊ตํด ์ ๋ฐ์ดํธํฉ๋๋ค.
'๐ป Algorithm > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค 11725 ํธ๋ฆฌ์ ๋ถ๋ชจ ์ฐพ๊ธฐ (DFS) (0) 2022.07.02 [Python] ๋ฐฑ์ค 19583 ์ธ์ด๋ฒ๊ฐ๊ฐ์ดํ (Set) (0) 2022.07.02 [Python] ๋ฐฑ์ค 19638 ์ผํฐ์ ๋ง๋ฒ์ ๋ฟ ๋ง์น (Heapq) (0) 2022.07.02 [Python] ๋ฐฑ์ค 2841 ์ธ๊ณ์ธ์ ๊ธฐํ ์ฐ์ฃผ (Stack) (0) 2022.07.02 [Python] ๋ฐฑ์ค 16165 ๊ฑธ๊ทธ๋ฃน ๋ง์คํฐ ์ค์์ด (Dictionary) (0) 2022.07.02