๐ 1874 | ์คํ ์์ด
https://www.acmicpc.net/problem/1874
๐ก Solution
Logic
1. ํด๋น ์์ด์ ๋ง๋ค๊ธฐ ์ํด์๋ ๋จผ์ ๋ชฉํ๋กํ๋ ์์ด์ ์๊น์ง ์คํ์ ์๋ฅผ ๋ฃ์ด์ค๋ค.
2. ์ดํ, ์คํ์ top ์์๊ฐ ๋ชฉํ๋ก ํ๋ ์์ ๊ฐ์ผ๋ฉด pop ํด์ค๋ค.
3. ์์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ฉฐ, ๋ง์ฝ 1๋ฒ ๊ณผ์ ์ ๋ง์น ํ 2๋ฒ ๊ณผ์ ์ ์กฐ๊ฑด์ด ์ถฉ์กฑ์ด ์๋๋ฉด ์์ด์ ๋ง๋ค ์ ์๋ค.
import sys
input = sys.stdin.readline
n = int(input())
num_list = [int(input()) for _ in range(n)]
def findNumList(n, num_list) :
stack = []
result = []
i = 0
m = 1
for i in range(n) :
num = num_list[i]
while m <= num :
stack.append(m)
result.append('+')
m += 1
if stack[-1] == num :
stack.pop()
result.append('-')
else :
return 0
return result
result = findNumList(n, num_list)
if result :
for d in result :
print(d)
else :
print('NO')
import sys
input = sys.stdin.readline
n = int(input())
num_list = [int(input()) for _ in range(n)]
def findNumList(num_list) :
stack = []
result = []
i = 0
m = 1
max_num = max(num_list)
while m <= max_num :
if m <= num_list[i] :
stack.append(m)
result.append('+')
m += 1
while stack and stack[-1] == num_list[i]:
stack.pop()
result.append('-')
i += 1
if i >= len(num_list): # ๋ฆฌ์คํธ ๋๊น์ง ๋๋ฌํ๋ฉด ์ค๋จ
break
if len(stack) == 0:
return result
else:
return 0
result = findNumList(num_list)
if result :
for d in result :
print(d)
else :
print('NO')
โถ ๐ Note
โ ์๊ฐ์ด๊ณผ ๋ฌธ์ ๋ก ๋ง์ด ์ ์ด ๋ฌธ์
1. ์์ด์ ์ฐพ์ง ๋ชปํ๋ ๊ฒฝ์ฐ์ else ์ฒ๋ฆฌ๋ฅผ ์๋ชปํด์ ๋ฌดํ๋ฃจํ๋ฅผ ๋๊ฒ ๋จ.
2. ์๋ฅผ ๋ค์ด 5,3 ์์ด์ด๋ผ๋ฉด ์ด๋ฏธ '5'์์ m์ 5๊น์ง ๊ฐ ํ 5๋ฅผ pop ํ๊ธฐ ๋๋ฌธ์ stack์ top์ 4, m์ 5์ด๊ธฐ์ ๋๋ฒ์งธ ์์ธ 3๋ณด๋ค๋ ํฌ๋ฏ๋ก ๊ณ์ํด์ ์กฐ๊ฑด์ด ๋ฒ๊ฐ์๊ฐ๋ฉฐ ์ฒดํฌ๋์ง๋ง break๋ฅผ ํ ์ ์์.
๐์ฐธ๊ณ : https://www.acmicpc.net/board/view/152451
'์๊ณ ๋ฆฌ์ฆ ๐ฉ๐ปโ๐ป > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BAEKJOON] 10866 | ๋ฑ (0) | 2024.11.14 |
---|---|
[BAEKJOON] 1158 | ์์ธํธ์ค ๋ฌธ์ (0) | 2024.11.14 |
[BAEKJOON] 10845 | ํ (0) | 2024.11.12 |
[BAEKJOON] 9012 | ๊ดํธ (0) | 2024.11.05 |
[BAEKJOON] 10828 | ์คํ (0) | 2024.11.04 |