๐ ๋ฌธ์ ์ดํด
์ ๋ ฅ ๋ฐ์ ์์ด์ ์ฒซ๋ฒ์งธ ํญ๊น์ง ๋ชจ๋ stack์ ๋ฃ๊ณ , ์คํ์ ๋ง์ง๋ง ์์๋ฅผ popํ๋ฉด ์์ด์ ์ฒซ๋ฒ์งธ ํญ์ด ์์ฑ๋๋ค.
์์ปจ๋ 4 3 6 8 7 5 2 1 ์์ด์ด ์์ผ๋ฉด ,2,3,4๊น์ง stack์ pushํ๊ณ pop์ ํ๋ฉด 4๊ฐ pop ๋๋ฉด์ ์์ด์ ์ฒซ๋ฒ์งธ ํญ์ด ์์ฑ๋๋ค.
๋ง์ฝ stack์ top(๊ฐ์ฅ ๋ง์ง๋ง์ push๋ ๊ฐ)์ด ์ ๋ ฅ ๋ฐ์ ์์ด๊ณผ ๊ฐ๋ค๋ฉด popํด์ฃผ๊ณ , ๋ ๋ค์ ๋ค์ ํญ์ ์์ด๋งํผ stack์ pushํ๊ณ ์กฐ๊ฑด๋ฌธ์ ํตํด ๊ฒ์ฌํ๊ณ .. ๋ค์ํญ์ด stack์ top์ ์๋ค๋ฉด 'NO'๋ฅผ ์ถ๋ ฅํด์ค๋ค.
๐ ๋ด๊ฐ ์ฒ์ ์ง ์ฝ๋
#์ค๊ฐ ๋จ๊ณ ๋ฉ๋ชจ๋ฉ๋ชจ
n = int(input())
sequence = range(1,n+1)
num, stack = [], []
for _ in range(n): # ์
๋ ฅ ๋ฐ๊ธฐ
num.append(int(input()))
for i in range(num[0]):
stack.append(sequence[i]) # ์์ด์ ์ฒซ๋ฒ์งธ ํญ๊น์ง stack์ ๋ชจ๋ push & '+' ์ถ๋ ฅ
print('+')
for _ in range(num[1]):
if num[1] in stack:
stack.pop()
print('-')
print(stack)
๐ ์์ ํ ์ฝ๋
import sys
n = int(input())
stack = []
seq = 1
for _ in range(n): # ์
๋ ฅ ๋ฐ๊ธฐ
num = int(sys.stdin.readline())
while seq <= num: # ์
๋ ฅ ๋ฐ์ ์๊น์ง stack์ ์ค๋ฆ์ฐจ์์ผ๋ก push
stack.append(seq)
print('+')
seq += 1 # 1์ฉ ์ฆ๊ฐํ๋ ์์ด sequence
if stack[-1] == num:
stack.pop()
print('-')
else:
print('NO')
break
1. ์๊ฐ ์ด๊ณผ๋ฅผ ์์ ๊ธฐ ์ํด sys.stdin.readline()์ผ๋ก ์ ๋ ฅ์ ๋ฐ์๋ค.
sys.stdin.readline()์ input() ํจ์์ ๋ฌ๋ฆฌ ๊ฐํ ๋ฌธ์(\n)์ ํฌํจํด์ ์ ๋ ฅ ๋ฐ์ ๋ฌธ์๋ฅผ ๋ฆฌํดํ๊ณ , ์ ๋ ฅ์ผ๋ก '๋ฌธ์์ด'์ ๋ฐ์ง ์๊ธฐ ๋๋ฌธ์ input ํจ์๋ณด๋ค ๋น ๋ฅธ ์๋๋ฅผ ๊ฐ๋๋ค.
2. while๋ฌธ ์ฌ์ฉ
์์ ๋ถํฐ ๋๋ผ๋ ๊ฑฐ์ง๋ง ๋๋ while์ ๋ํ ๊ฑฐ๋ถ๊ฐ์ด ์๋ค..๐ while์ ์ด๋ค๊ณ ํด์ ๋ฌด์กฐ๊ฑด ๋ณต์ก๋๊ฐ ์ปค์ง๋ ๊ฑด ์๋๋ฐ ํ๋ฅ ์์ ์ด์ ๋ง์ผ๋ก ๊ฑฐ๋ถํ๋ ์์ข์ ์์๊ฒฝ์ด ์๊ธด ๊ฒ๊ฐ๋ค. ์ด๋ฒ ๊ธฐํ์ ์์ฃผ ํํํ๊ณ !! ๋ง๊ฒ ๋ค.
while๋ฌธ๊ณผ ์กฐ๊ฑด๋ฌธ + break ์กฐํฉ์ ์ ์ ํ๊ฒ ์ ์ฐ๋ฉด ๋ฌธ์ ์กฐ๊ฑด์ ๋ถํฉํ๋ฉด์ ๋ณต์ก๋๋ ์ ๋นํ ์ฌ์ฉํ ์ ์๋ค๋ ์ ์ ๊นจ๋ฌ์๋ค.
์ด๋ ๊ฒ ์์ ์ ํ์ง๋ง ์ถ๋ ฅ ์ด๊ณผ๊ฐ ๋ด๋ค.
๊ทธ ์ด์ ๋ ๋ด๊ฐ ์ ๋ ฅ ๋ฐ์ ์๊น์ง stack์ pushํ ๋ print('+')๋ฅผ ํ๋๋ก ์ค์ ํด๋๊ธฐ ๋๋ฌธ์ด๋ค.
๐ฏ ์ต์ข
import sys
n = int(input())
ans, stack = [], []
seq = 1
flag = True
for _ in range(n): # ์
๋ ฅ ๋ฐ๊ธฐ
num = int(sys.stdin.readline())
while seq <= num: # ์
๋ ฅ ๋ฐ์ ์๊น์ง stack์ ์ค๋ฆ์ฐจ์์ผ๋ก push
stack.append(seq)
ans.append('+')
seq += 1 # 1์ฉ ์ฆ๊ฐํ๋ ์์ด sequence
if stack[-1] == num:
stack.pop()
ans.append('-')
else:
print('NO')
flag = False
break
if flag == True:
print(*ans)
๐ก ๋ฐฐ์ด ์
์ด๋ค ๊ฐ์ด ๋ ๋๊น์ง ์์ ์ ์ํํ๋ ์ผ์ ์ฌ๋ฌ๋ฒ ํด์ผ ํ๋ค๋ฉด(์ ํํ n๋ฒ. ๋ฑ ๋จ์ด์ง๊ฒ ์กฐ๊ฑด๊ฑธ๊ธฐ ํ๋ ๊ฒฝ์ฐ),
while๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. ์ด๋ ๋ฌดํ๋ฃจํ์ ๋น ์ง์ง ์๊ฒ ์กฐ๊ฑด๋ฌธ๊ณผ break์ ์กฐํฉ์ผ๋ก ์ ์ ํ๊ฒ ๋ฐ๋ณต๋ฌธ์ ๋น ์ ธ ๋์ค๋๋ก ๊ตฌํํ๋ ๋ฐ์
์ง์ค ํด์ผ ํ๋ค.
'PS > BOJ&Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/1927] ์ต์ ํ (1) | 2022.12.23 |
---|---|
[๋ฐฑ์ค/2747] ํผ๋ณด๋์น ์ with ๋์ ๊ณํ๋ฒ (0) | 2022.12.22 |
[๋ฐฑ์ค/14912] ์ซ์ ๋น๋์ (0) | 2022.12.21 |
[๋ฐฑ์ค/1157] ๊ธ์ ๊ณต๋ถ (0) | 2022.12.19 |
[๋ฐฑ์ค/2420] ์ฌํ๋ฆฌ์๋ (0) | 2022.12.18 |