๐Ÿ˜ข ๋ฐฑ์ค€ 1931 : ํšŒ์˜์‹ค ๋ฐฐ์ •

3Juhwanยท2021๋…„ 2์›” 28์ผ
0

Algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
19/23

1931: ํšŒ์˜์‹ค ๋ฐฐ์ •

Greedy ๋ฌธ์ œ์ด๋‹ค.
์ด๋ฒˆ ๋ฌธ์ œ๋Š” ์–ด๋ ค์›Œ์„œ ์•ˆ ํ’€๋‹ค๊ฐ€ ํ•œ ๋ฒˆ ๊ฑด๋“ค๋ดค๋‹ค.


๐Ÿ“Œ Try 1

N = int(input())
time, nums = list(), list()
for _ in range(N):
  time.append(list(map(int, input().split())))

time.sort(key=lambda x:x[0])
  
for i in range(N):
    cnt, stack = 1, [time[i]]
  
    for j in range(i+1,N):
        if stack[-1][1] <= time[j][0]:
            stack.append(time[j])
            cnt += 1
    nums.append(cnt)

print(max(nums))

์–ด๋–ป๊ฒŒ ์ ‘๊ทผํ•ด์•ผ ํ• ์ง€ ๋ชฐ๋ผ์„œ, ๋‹จ์ˆœํ•˜๊ฒŒ for๋ฌธ์œผ๋กœ ํ’€์—ˆ๋‹ค.
ํ•˜์ง€๋งŒ,, ์‹œ๊ฐ„์ดˆ๊ณผ ๋–ด๋‹ค.
์ฝ”๋“œ๋„ ๋‚œ์žกํ•˜๋‹ค.


๐Ÿ“Œ Try 2

N = int(input())
inputArr = list()
for _ in range(N):
  inputArr.append(list(map(int, input().split())))

inputArr.sort(key=lambda x:(x[1], x[0]))

end, cnt = 0, 0
for x in inputArr:
  if x[0] > end:
    end = x[1]
    cnt += 1
    
print(cnt)

๋„์ €ํžˆ ๋ชฐ๋ผ์„œ ๋‹ค๋ฅธ ๋ถ„ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ–ˆ๋‹ค.

๋นจ๋ฆฌ ๋๋‚˜๋Š” ํšŒ์˜ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ์„ ํ•ด์•ผ ํ•œ๋‹ค.
์ด์œ ๋Š” ๊ฐ„๋‹จํ•˜๋‹ค. ๋นจ๋ฆฌ ๋๋‚ ์ˆ˜๋ก ๋’ค์—์„œ ๊ณ ๋ คํ•ด๋ณผ ํšŒ์˜๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ด๊ฒƒ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ•ต์‹ฌ์ด๊ณ , ์ง๊ด€์ ์œผ๋กœ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

๋‚˜๋Š” ์ง๊ด€์ ์œผ๋กœ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์•„, ๋ฐ˜๋ก€๋ฅผ ์ฐพ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ดํ•ดํ–ˆ๋‹ค.

์กฐ๊ฑด : ํšŒ์˜์˜ ์‹œ์ž‘์‹œ๊ฐ„๊ณผ ๋๋‚˜๋Š” ์‹œ๊ฐ„์ด ๊ฐ™์„ ์ˆ˜๋„ ์žˆ๋‹ค.

inputArr.sort(key=lambda x:(x[1], x[0]))๋ฅผ ํ•œ ์ด์œ ๋Š” inputArr๋ฅผ ํšŒ์˜ ์ข…๋ฃŒ ์‹œ๊ฐ„์œผ๋กœ ํ•œ ๋ฒˆ ์ •๋ ฌํ•˜๊ณ  ํšŒ์˜ ์‹œ์ž‘ ์‹œ๊ฐ„์œผ๋กœ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ •๋ ฌํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.


๐ŸŽ Reference

profile
Codeforces์™€ USACO ํ’€์ด๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ๊ธ€๋„ ๊ณ„์† ์—…๋ฐ์ดํŠธ ๋ฉ๋‹ˆ๋‹ค.

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