์•Œ๊ณ ๋ฆฌ์ฆ˜/์„ ํ˜•๊ตฌ์กฐ

[๋ฐฑ์ค€ 1863 ๐Ÿฅ‡] ์Šค์นด์ด๋ผ์ธ ์‰ฌ์šด ๊ฑฐ

1eehyunji 2023. 8. 3. 01:20

๋ฌธ์ œ

๋„์‹œ์—์„œ ํƒœ์–‘์ด ์งˆ ๋•Œ์— ๋ณด์ด๋Š” ๊ฑด๋ฌผ๋“ค์˜ ์œค๊ณฝ์„ ์Šค์นด์ด๋ผ์ธ์ด๋ผ๊ณ  ํ•œ๋‹ค. ์Šค์นด์ด๋ผ์ธ๋งŒ์„ ๋ณด๊ณ ์„œ ๋„์‹œ์— ์„ธ์›Œ์ง„ ๊ฑด๋ฌผ์ด ๋ช‡ ์ฑ„์ธ์ง€ ์•Œ์•„ ๋‚ผ ์ˆ˜ ์žˆ์„๊นŒ? ๊ฑด๋ฌผ์€ ๋ชจ๋‘ ์ง์‚ฌ๊ฐํ˜• ๋ชจ์–‘์œผ๋กœ ๋ฐ‹๋ฐ‹ํ•˜๊ฒŒ ์ƒ๊ฒผ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.

์ •ํ™•ํžˆ ๊ฑด๋ฌผ์ด ๋ช‡ ๊ฐœ ์žˆ๋Š”์ง€ ์•Œ์•„๋‚ด๋Š” ๊ฒƒ์€ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ์— ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ , ๊ฑด๋ฌผ์ด ์ตœ์†Œํ•œ ๋ช‡ ์ฑ„ ์ธ์ง€ ์•Œ์•„๋‚ด๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅํ•ด ๋ณด์ธ๋‹ค. ์ด๋ฅผ ์•Œ์•„๋‚ด๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•ด ๋ณด์ž.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— n์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ n ≤ 50,000) ๋‹ค์Œ n๊ฐœ์˜ ์ค„์—๋Š” ์™ผ์ชฝ๋ถ€ํ„ฐ ์Šค์นด์ด๋ผ์ธ์„ ๋ณด์•„ ๊ฐˆ ๋•Œ ์Šค์นด์ด๋ผ์ธ์˜ ๊ณ ๋„๊ฐ€ ๋ฐ”๋€Œ๋Š” ์ง€์ ์˜ ์ขŒํ‘œ x์™€ y๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ x ≤ 1,000,000. 0 ≤ y ≤ 500,000) ์ฒซ ๋ฒˆ์งธ ์ง€์ ์˜ x์ขŒํ‘œ๋Š” ํ•ญ์ƒ 1์ด๋‹ค.

์ถœ๋ ฅ

์ฒซ ์ค„์— ์ตœ์†Œ ๊ฑด๋ฌผ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

๋ฌธ์ œํ’€์ด

import sys

n=int(sys.stdin.readline())

stack=[]
ans=0
for _ in range(n):
    x,y=map(int, sys.stdin.readline().strip().split(' '))
    while stack and stack[-1]>y:
        stack.pop()
        ans+=1
    if y not in stack and y!=0:
        stack.append(y)

if stack:
    ans+=len(stack)

print(ans)

์Šคํƒ์„ ์ด์šฉํ•˜๋ฉด ์‰ฌ์šด ๋ฌธ์ œ์˜€๋‹ค.

๋จผ์ € ๊ณ ๋„๊ฐ€ ๋ฐ”๋€Œ๋Š” ์ •์ ์„ ์ž…๋ ฅ๋ฐ›์„ ๋•Œ๋งˆ๋‹ค ๋†’์ด ๊ฐ’ ์ฆ‰, y๊ฐ’๋ณด๋‹ค ๋” ํฐ ๊ฐ’์ด stack์— ์กด์žฌํ•˜๋Š”์ง€, ํ™•์ธํ•˜๋ฉด์„œ y๊ฐ’๋ณด๋‹ค ๋” ํฐ ๊ฐ’์€ popํ•ด์ฃผ๊ณ  ๊ฑด๋ฌผ์˜ ๊ฐœ์ˆ˜์ธ ans +1 ํ•ด์ค€๋‹ค. stack์— y๋ณด๋‹ค ๋” ํฐ ๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ด์ค€๋‹ค. 

(์ฒ˜์Œ๋ถ€ํ„ฐ stack์— ๊ฐ’์„ ๋„ฃ์„ ๋•Œ๋ถ€ํ„ฐ ์ž์‹ ๋ณด๋‹ค ํฐ ๊ฐ’์€ ๋ชจ๋‘ popํ•˜๊ณ  ๊ฐ’์„ ๋„ฃ๊ธฐ ๋•Œ๋ฌธ์— stack์˜ top์„ ํ™•์ธํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ์ฆ‰, ๊ฐ’์„ ๋„ฃ์„ ๋•Œ๋งˆ๋‹ค stack์— ์กด์žฌํ•˜๋Š” ๊ฐ’๋“ค๋ณด๋‹ค ๋” ํฐ ๊ฐ’๋งŒ ๋„ฃ๊ฒŒ ๋จ.)

 

๊ทธ๋ฆฌ๊ณ  y๊ฐ€ stack์— ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด์„œ 0์ด ์•„๋‹ˆ๋ผ๋ฉด stack์— pushํ•ด์ค€๋‹ค. 0์ธ ๊ฒฝ์šฐ์—” ์ƒˆ๋กœ์šด ๊ฑด๋ฌผ์ด ์‹œ์ž‘๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ธฐ์กด์˜ ๊ฑด๋ฌผ์„ ํ™•์ •์ง€์„ ์ˆ˜ ์žˆ๊ธฐ๋งŒ ํ•˜๋ฏ€๋กœ 0์€ pushํ•ด์ฃผ๋ฉด ์•ˆ๋œ๋‹ค. 

 

๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์— stack์— ๋‚จ์€ ๊ฑด๋ฌผ์˜ ๊ฐœ์ˆ˜๋ฅผ ans์— ๋”ํ•ด์ค€๋‹ค. 

 

์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์งœ์•ผํ•˜๋Š” ์ด์œ ๋Š” ์Šคํƒ์— ์กด์žฌํ•˜๋Š” ๊ฐ’๋ณด๋‹ค ๋” ํฐ ๊ฐ’์ด๋‚˜, ๊ฐ™์€ ๊ฐ’์€ ์Šคํƒ์— ์กด์žฌํ•˜๋Š” ๊ฑด๋ฌผ์ด ๋๋‚ฌ๋Š”์ง€ ํ™•์ •์ง€์„ ์ˆ˜ ์—†๊ณ , ์Šคํƒ์— ์กด์žฌํ•˜๋Š” ๊ฐ’๋ณด๋‹ค ๋” ์ž‘์€ ๊ฐ’์ด ๋‚˜์˜ค๋ฉด ์Šคํƒ์— ์กด์žฌํ•˜๋Š” ๊ฑด๋ฌผ๋“ค์˜ ์ข…์ ์„ ํ™•์ •์ง€์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ทธ๋ฆผ์œผ๋กœ ์„ค๋ช…ํ•ด๋ณด์ž๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.