🔑 오늘의 학습 키워드 : 스택
🔗 문제링크 https://www.acmicpc.net/problem/1874
import sys
input = sys.stdin.readline
n = int(input())
goal = [int(input()) for _ in range (n)]
stack = []
made = []
pointer = 0
answer = []
for i in range (1,n+1):
stack.append(i)
answer.append('+')
while stack and stack[-1] == goal[pointer]:
made.append(stack.pop())
answer.append('-')
pointer += 1
if made == goal:
for ans in answer:
print(ans)
else:
print('NO')
🗒️ 공부한 내용 본인의 언어로 정리하기
🤔 문제를 보고 든 생각
간단한 스택 문제구만!
⏰ 예상 시간 복잡도 O(N)
제한 사항
첫 줄에 n (1 ≤ n ≤ 100,000)이 주어진다. 둘째 줄부터 n개의 줄에는 수열을 이루는 1이상 n이하의 정수가 하나씩 순서대로 주어진다. 물론 같은 정수가 두 번 나오는 일은 없다.
😎 알고리즘 개요
1. 스택 삽입
1부터 n까지 스택에 숫자를 집어 넣는다.
answer에 +도 함께 넣는다.
2. 스택 비교
목표로 하는 수열의 맨 앞과 스택의 맨 위가 같으면 pop하는 연산을 해준다.
그리고 answer 에는 -를 넣는다
3. 결과 출력
만든 수열 made와 목표 goal이 같으면 answer을 줄바꿈하여 출력하고
아니면 못 만드는 경우로써 "NO"를 출력한다.
✅ 오늘의 회고
- 스택
#99클럽 #코딩테스트준비 #개발자취업 #항해99 #TIL
'Coding test' 카테고리의 다른 글
99클럽 코테 스터디 30일차 TIL, leetcode / Minimum Operations to Make a Subsequence (0) | 2024.08.20 |
---|---|
99클럽 코테 스터디 29일차 TIL, leet code / Maximum Profit in Job Scheduling (0) | 2024.08.19 |
99클럽 코테 스터디 27일차 TIL, 프로그래머스 / 공 이동 시뮬레이션 (1) | 2024.08.17 |
99클럽 코테 스터디 26일차 TIL, 프로그래머스 / 개인정보 수집 유효기간 (0) | 2024.08.16 |
99클럽 코테 스터디 25일차 TIL, 프로그래머스 / 순위 (0) | 2024.08.15 |