[BOJ: 20440] - Python / ํŒŒ์ด์ฌ - ๐ŸŽต๋‹ˆ๊ฐ€ ์‹ซ์–ด ์‹ซ์–ด ๋„ˆ๋ฌด ์‹ซ์–ด ์‹ซ์–ด ์˜ค์ง€ ๋งˆ ๋‚ด๊ฒŒ ์ฐ์ฉ๋Œ€์ง€๋งˆ๐ŸŽต

o_jooon_ยท2024๋…„ 11์›” 19์ผ
0

BOJ

๋ชฉ๋ก ๋ณด๊ธฐ
47/49
post-thumbnail

๋ฌธ์ œ

์‹œ๊ฐ„ ๋ณต์žก๋„

  • n๋งŒํผ์˜ ๋ฐ˜๋ณต + ์ตœ๋Œ€ n๋งŒํผ์˜ ํƒ์ƒ‰ + ์ตœ๋Œ€ nํฌ๊ธฐ๋กœ ์ •๋ ฌ -> O(n)O(n)

๋ฌธ์ œ ์ ‘๊ทผ๋ฒ•

  1. ๋”•์…”๋„ˆ๋ฆฌ์— ๋ชจ๊ธฐ์˜ ์ž…ํ‡ด์žฅ ์‹œ๊ฐ„์„ ๊ธฐ๋กํ•œ๋‹ค. -> ์ž…์žฅ ์‹œ๊ฐ„: +1, ํ‡ด์žฅ ์‹œ๊ฐ„: -1
  2. ๊ฐ€์žฅ ๋งŽ์€ ์‹œ๊ฐ„์˜ ๋ชจ๊ธฐ ์ˆ˜, ํ˜„์žฌ์˜ ๋ชจ๊ธฐ ์ˆ˜, ๋‹ต์ด ๋  ์ž…ํ‡ด์žฅ ์‹œ๊ฐ„์„ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.
  3. ์ •ํ™•ํ•œ ์ •๋‹ต์„ ์œ„ํ•œ flag๋ฅผ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค. -> flag๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ, ํ‡ด์žฅ ์‹œ๊ฐ„์ด ๋’ค๋กœ ๋ฐ€๋ฆด ์ˆ˜ ์žˆ๋‹ค.
    (์ตœ๋Œ€์น˜๋กœ ์ฆ๊ฐ€ํ–ˆ๋‹ค ๊ฐ์†Œํ•˜๋Š” ํŒจํ„ด์ด ๋ฐ˜๋ณต๋˜๋ฉด, ํ‡ด์žฅ์‹œ๊ฐ„์ด ๋งˆ์ง€๋ง‰ ํŒจํ„ด์˜ ๊ฐ์†Œํ•˜๋Š” ์‹œ๊ฐ„์ด ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ)
  4. ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ์ •๋ ฌํ•˜์—ฌ ๊ฐ€์žฅ ์ฒ˜์Œ๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•œ๋‹ค.
    4-1. ํ˜„์žฌ ๋ชจ๊ธฐ ์ˆ˜์— ํ˜„์žฌ ํ‚ค์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’(ํ˜„์žฌ ์‹œ๊ฐ„์˜ ๋ชจ๊ธฐ ์ˆ˜)์„ ๋”ํ•œ๋‹ค.
    4-2. ํ˜„์žฌ ๋ชจ๊ธฐ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ์‹œ๊ฐ„์˜ ๋ชจ๊ธฐ ์ˆ˜๋ณด๋‹ค ํฌ๋‹ค๋ฉด ๊ฐฑ์‹ ์„ ํ•ด์ค€ ํ›„, ์ž…์žฅ ์‹œ๊ฐ„์„ ํ˜„์žฌ ์‹œ๊ฐ„์œผ๋กœ ์„ค์ •ํ•˜๊ณ  flag๋ฅผ True๋กœ ์ฒดํฌํ•ด์ค€๋‹ค.
    4-3. ํ˜„์žฌ ๋ชจ๊ธฐ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ์‹œ๊ฐ„์˜ ๋ชจ๊ธฐ ์ˆ˜๋ณด๋‹ค ์ž‘์œผ๋ฉด์„œ flag๊ฐ€ True๋ฉด, ํ‡ด์žฅ ์‹œ๊ฐ„์„ ํ˜„์žฌ ์‹œ๊ฐ„์œผ๋กœ ์„ค์ •ํ•˜๊ณ  flag๋ฅผ False๋กœ ์ฒดํฌํ•ด์ค€๋‹ค.

์ •๋ฆฌ

  • ๋ชจ๊ธฐ์˜ ์ •๋ณด๊ฐ€ ๋“ค์–ด์žˆ๋Š” ์‹œ๊ฐ„๋งŒ์„ ์ฐจ๋ก€๋Œ€๋กœ ํƒ์ƒ‰ํ•˜๋ฉด์„œ, ๋ชจ๊ธฐ์˜ ์ˆ˜๊ฐ€ ์ตœ๋Œ€๊ฐ€ ๋˜๋Š” ์‹œ๊ฐ„์„ ์ž…์žฅ ์‹œ๊ฐ„์œผ๋กœ ๊ฐฑ์‹ ํ•˜๊ณ  ์ตœ๋Œ€์น˜์—์„œ ๊ฐ์†Œํ•˜๋Š” ์‹œ๊ฐ„์„ ํ‡ด์žฅ ์‹œ๊ฐ„์œผ๋กœ ๊ฐฑ์‹ ํ•œ๋‹ค.
  • ๊ฐ™์€ ํŒจํ„ด์ด ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐ˜๋ณต๋˜์–ด๋„ ๊ฐ€์žฅ ๋น ๋ฅธ ์‹œ๊ฐ„๋Œ€์˜ ๊ตฌ๊ฐ„๋งŒ์„ ์ถœ๋ ฅํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— flag๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

์ฝ”๋“œ

# BOJ
# G3 - 20440(๐ŸŽต๋‹ˆ๊ฐ€ ์‹ซ์–ด ์‹ซ์–ด ๋„ˆ๋ฌด ์‹ซ์–ด ์‹ซ์–ด ์˜ค์ง€ ๋งˆ ๋‚ด๊ฒŒ ์ฐ์ฉ๋Œ€์ง€๋งˆ๐ŸŽต - 1)

import sys
from collections import defaultdict
input = sys.stdin.readline

n = int(input())
d = defaultdict(int)

for _ in range(n):
    s, e = map(int, input().split())
    d[s] += 1
    d[e] -= 1

max_mos, now_mos = 0, 0
tem, txm = 0, 0
flag = False

for i in sorted(d.keys()):
    now_mos += d[i]
    if now_mos > max_mos:
        max_mos = now_mos
        tem = i
        flag = True
    elif now_mos < max_mos and flag:
        txm = i
        flag = False

print(max_mos)
print(tem, txm)
profile
์•ˆ๋…•ํ•˜์„ธ์š”.

0๊ฐœ์˜ ๋Œ“๊ธ€