๋ฌธ์
๋์์์ ํ์์ด ์ง ๋์ ๋ณด์ด๋ ๊ฑด๋ฌผ๋ค์ ์ค๊ณฝ์ ์ค์นด์ด๋ผ์ธ์ด๋ผ๊ณ ํ๋ค. ์ค์นด์ด๋ผ์ธ๋ง์ ๋ณด๊ณ ์ ๋์์ ์ธ์์ง ๊ฑด๋ฌผ์ด ๋ช ์ฑ์ธ์ง ์์ ๋ผ ์ ์์๊น? ๊ฑด๋ฌผ์ ๋ชจ๋ ์ง์ฌ๊ฐํ ๋ชจ์์ผ๋ก ๋ฐ๋ฐํ๊ฒ ์๊ฒผ๋ค๊ณ ๊ฐ์ ํ๋ค.
์ ํํ ๊ฑด๋ฌผ์ด ๋ช ๊ฐ ์๋์ง ์์๋ด๋ ๊ฒ์ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์ ๋ถ๊ฐ๋ฅํ๊ณ , ๊ฑด๋ฌผ์ด ์ต์ํ ๋ช ์ฑ ์ธ์ง ์์๋ด๋ ๊ฒ์ ๊ฐ๋ฅํด ๋ณด์ธ๋ค. ์ด๋ฅผ ์์๋ด๋ ํ๋ก๊ทธ๋จ์ ์์ฑํด ๋ณด์.
์ ๋ ฅ
์ฒซ์งธ ์ค์ 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์ ๋ํด์ค๋ค.
์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์๊ณ ๋ฆฌ์ฆ์ ์ง์ผํ๋ ์ด์ ๋ ์คํ์ ์กด์ฌํ๋ ๊ฐ๋ณด๋ค ๋ ํฐ ๊ฐ์ด๋, ๊ฐ์ ๊ฐ์ ์คํ์ ์กด์ฌํ๋ ๊ฑด๋ฌผ์ด ๋๋ฌ๋์ง ํ์ ์ง์ ์ ์๊ณ , ์คํ์ ์กด์ฌํ๋ ๊ฐ๋ณด๋ค ๋ ์์ ๊ฐ์ด ๋์ค๋ฉด ์คํ์ ์กด์ฌํ๋ ๊ฑด๋ฌผ๋ค์ ์ข ์ ์ ํ์ ์ง์ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ฆผ์ผ๋ก ์ค๋ช ํด๋ณด์๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
'์๊ณ ๋ฆฌ์ฆ > ์ ํ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค 9935 ๐ฅ] ๋ฌธ์์ด ํญ๋ฐ (1) | 2023.08.12 |
---|---|
[๋ฐฑ์ค 2493 ๐ฅ] ํ (0) | 2023.08.03 |
[๋ฐฑ์ค 1874 ๐ฅ] ์คํ ์์ด (0) | 2023.07.31 |
[๋ฐฑ์ค 2003 ๐ฅ] ์๋ค์ ํฉ2 (0) | 2023.07.31 |
[๋ฐฑ์ค 1935 ๐ฅ] ํ์ ํ๊ธฐ์2 (0) | 2023.07.10 |