๐ŸŒฑ → ๐ŸŒณ

[๋ฐฑ์ค€] 1874๋ฒˆ: ์Šคํƒ ์ˆ˜์—ด python ๋ณธ๋ฌธ

Algorithms

[๋ฐฑ์ค€] 1874๋ฒˆ: ์Šคํƒ ์ˆ˜์—ด python

BAY 2023. 1. 4. 12:26
728x90

https://www.acmicpc.net/problem/1874

 

1874๋ฒˆ: ์Šคํƒ ์ˆ˜์—ด

1๋ถ€ํ„ฐ n๊นŒ์ง€์— ์ˆ˜์— ๋Œ€ํ•ด ์ฐจ๋ก€๋กœ [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ์ˆ˜์—ด [4, 3, 6, 8, 7, 5, 2, 1]์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

www.acmicpc.net

 

๋ฌธ์ œ ์ •๋ณด

์Šคํƒ ์‹ค๋ฒ„3 1h20m X

์„ค๊ณ„ ๋ฐฉ๋ฒ•

์ž…๋ ฅํ•œ ์ˆ˜๋ฅผ ๋งŒ๋‚  ๋•Œ ๊นŒ์ง€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ push

์ž…๋ ฅํ•œ ์ˆ˜๋ฅผ ๋งŒ๋‚˜๋ฉด while๋ฌธ ํƒˆ์ถœ. ์ฆ‰ cnt = num์ผ ๋•Œ๊นŒ์ง€ while๋ฌธ์„ ๋Œ์•„ ์Šคํƒ์„ ์Œ“์Œ

stack์˜ top์ด ์ž…๋ ฅํ•œ ์ˆซ์ž์™€ ๊ฐ™๋‹ค๋ฉด ์Šคํƒ์˜ top์„ ๊บผ๋‚ด ์ˆ˜์—ด์„ ๋งŒ๋“ค์–ด ์คŒ

stack์˜ top์ด ์ž…๋ ฅํ•œ ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ์ฃผ์–ด์ง„ ์Šคํƒ์„ ๋งŒ๋“ค ์ˆ˜ ์—†์Œ

์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์Šคํƒ์ด ์ž…๋ ฅ๋˜๋Š”๋ฐ top์ด num๋ณด๋‹ค ํฌ๋ฉด num์€ top๋ณด๋‹ค ๋” ์•„๋ž˜์— ์Œ“์—ฌ์žˆ๊ธฐ ๋•Œ๋ฌธ

์ฝ”๋“œ

n = int(input())
stack=[]
op = []
cnt = 1
temp = 0

for i in range(n):
  num = int(input())
  while cnt <= num:
    stack.append(cnt)
    op.append('+')
    cnt+=1
  if stack[-1] == num:
    stack.pop()
    op.append('-')
  else:
    print('NO')
    temp+=1
    break

if temp == 0:
  for i in op:
    print(i)

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

$O(n^2)$

์–ด๋ ค์› ๋˜ ์ 

๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ ๋ถ€ํ„ฐ๊ฐ€ ์–ด๋ ค์› ๋Š”๋ฐ ์ดํ•ดํ•˜๊ณ ๋‚˜์„œ๋„ ์–ด๋–ค์‹์œผ๋กœ ๊ตฌํ˜„ํ•ด์•ผํ• ์ง€ ๊ฐ์ด ์•ˆ์žกํ˜€์„œ ๊ณ ์ƒํ–ˆ๋‹ค

์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์—ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  1,2,3,4๋ผ๋Š” ์ˆซ์ž๋ฅผ i+1๋กœ stack์— ๋„ฃ์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋‹ˆ ์–ด๋ ค์›€์ด ์žˆ์—ˆ๋Š”๋ฐ cnt๋กœ ์‰ฝ๊ฒŒ ๋„ฃ์„ ์ˆ˜ ์žˆ๊ตฌ๋‚˜ ๊นจ๋‹ฌ์•˜๋‹ค

python list์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” [-1]์ด๋Ÿฐ ๊ฒƒ๋“ค์„ ์•Œ๊ธฐ๋งŒ ์•Œ๊ณ  ๋ฌธ์ œ์— ์ ์šฉํ•˜๋Š” ๋Šฅ๋ ฅ์ด ๋–จ์–ด์ง€๋Š” ๊ฒƒ ๊ฐ™๋‹ค

์ฐธ๊ณ  ์ž๋ฃŒ

https://pacific-ocean.tistory.com/231

https://hongcoding.tistory.com/39

728x90