๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm/๋ฐฑ์ค€(BOJ)

[ ํŒŒ์ด์ฌ(python) ] ๋ฐฑ์ค€ 12789 - ๋„ํ‚ค๋„ํ‚ค ๊ฐ„์‹๋“œ๋ฆฌ๋ฏธ

by YWTechIT 2021. 6. 30.
728x90

๐Ÿ“ ๋ฐฑ์ค€ 12789 - ๋„ํ‚ค๋„ํ‚ค ๊ฐ„์‹๋“œ๋ฆฌ๋ฏธ

๋ฐฑ์ค€ 12789 - ๋„ํ‚ค๋„ํ‚ค ๊ฐ„์‹๋“œ๋ฆฌ๋ฏธ


โšก๏ธ ๋‚˜์˜ ํ’€์ด

์–ธ๋œป ์‰ฌ์›Œ ๋ณด์˜€์œผ๋‚˜ ๋ง‰์ƒ ํ’€์–ด๋ณด๋‹ˆ๊นŒ ์กฐ๊ธˆ ์–ด๋ ค์› ๋‹ค. ๋งจ ์•ž์˜ ์‚ฌ๋žŒ๋งŒ ์ด๋™์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ง€๋ฌธ์„ ๋ณด์•„ ํ˜„์žฌ ์ค„ ์„œ์žˆ๋Š” ๊ณณ์€ queue์˜ ์ž๋ฃŒ๊ตฌ์กฐ์ด๊ณ , ๊ฐ€์šด๋ฐ ๊ณต๊ฐ„์— ๋“ค์–ด๊ฐˆ ์ˆœ ์žˆ์ง€๋งŒ ์ œ์ผ ์•ž์ด ๋ฒฝ์œผ๋กœ ๋ง‰ํ˜”๊ธฐ ๋•Œ๋ฌธ์— ๋งจ ๋’ค๋ถ€ํ„ฐ ์‚ฌ๋žŒ์ด ๋‚˜์™€์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ํ•œ ๋ช…์”ฉ๋งŒ ์„ค ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์€ stack์œผ๋กœ ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ๋‹ค.

 

๋Œ€์ฒด์ ์œผ๋กœ queue์™€ stack ๋ฌธ์ œ๋Š” ์ง€๋ฌธ์˜ ์˜๋ฏธ๋ฅผ ์ž˜ ํ•ด์„ํ•ด์•ผ ์–ด๋–ค ์ž๋ฃŒํ˜•์„ ์‚ฌ์šฉํ•ด์•ผ ํ• ์ง€ ๊ฐ์ด ์˜ค๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ ๊ฐ์„ ์ฐพ๊ธฐ ์œ„ํ•ด ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ด์•ผ๊ฒ ๋‹ค.

 

์ฒ˜์Œ์—๋Š” queue์— ์žˆ๋Š” ์‚ฌ๋žŒ์ด ๋‹ค ๋น ์ง€๊ณ  stack์„ ์ƒ๊ฐํ•˜๋ฉด ๋  ์ค„ ์•Œ์•˜๋Š”๋ฐ queue ๋ณด๋‹ค stack์— ๋” ์ž‘์€ ๊ฐ’์ด ์žˆ์œผ๋ฉด stack์— ์žˆ๋Š” ์‚ฌ๋žŒ์„ ๋จผ์ € ๋นผ์ค˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋™์‹œ์— ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด ์ž…๋ ฅ์ด 3 2 1 4 5 ์ธ ๊ฒฝ์šฐ๋ฅผ ์‚ดํŽด๋ณด์ž. 4๋ฒˆ์งธ ์ค„์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด standing๋ณด๋‹ค stack์—์„œ ๋” ์ž‘์€ ๊ฐ’์„ ๋จผ์ € ๋นผ์ค˜์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ถ”๊ฐ€๋กœ line 14๋ฒˆ ์ฝ”๋“œ์— while stack์œผ๋กœ ์ž‘์„ฑํ–ˆ๋Š”๋ฐ, ๋‹ค์Œ์œผ๋กœ ๋น ๋ฅธ ๋ฒˆํ˜ธํ‘œ๊ฐ€ stack์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— while๋ฌธ์œผ๋กœ ์ž‘์„ฑํ–ˆ๋‹ค.

 

 

# ๋‚˜์˜ ์ฝ”๋“œ
n = int(input())
standing = list(map(int, input().split()))
stack = []
target = 1

while standing:
    if standing[0] == target:
        standing.pop(0)
        target += 1
    else:
        stack.append(standing.pop(0))

    while stack:
        if stack[-1] == target:
            stack.pop()
            target += 1
        else:
            break

if not stack: 
    print('Nice')
else:
    print('No')

# ํ˜น์€ ์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•ด๋„ ๋œ๋‹ค.
print('Nice' if not stack else 'No')
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€