일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 백트래킹
- 재귀함수
- 머신러닝
- 정렬
- 코테
- backtracking
- 신나는함수실행
- ML
- 알고리즘
- two pointer
- 프로그래머스
- 완전탐색
- Github
- sort
- Algorithm
- 브루트포스
- CS
- 코딩테스트
- 백준
- Virtual Memory
- BF
- 1일1솔
- 파이썬
- 재귀
- Python
- Loss
- OS
- 투포인터
- dfs
- python3
Archives
- Today
- Total
이것저것 공부 기록하기
[Algorithm] 1일1솔 - 백준 1874 스택 수열 (python3) 본문
문제링크
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
문제설명
push, pop 을 해가며 pop을 이용해 입력 받은 수열을 만드는 문제이다.
문제의 예시를 살펴보자.
8 4 3 6 8 7 5 2 1 과 같이 입력을 받을 때, 수열 리스트 = [4,3,6,8,7,5,2,1] 이 된다.
우선 push를 4번 하면 스택에 다음과 같이 수가 담긴다.
s = [1,2,3,4]
여기서 입력 받은 수열과 같게 하려면 pop을 두 번 해서 수열 리스트에 담아주면 [4,3] 과 같이 된다.
문제풀이
import sys
input = sys.stdin.readline
n = int(input()); stack = []
seq = []; cnt = 1
tmp = True
for i in range(n):
num = int(input())
while cnt <= num:
if cnt > num:
break
stack.append(cnt)
seq.append('+')
cnt += 1
if stack[-1] == num:
stack.pop()
seq.append('-')
else:
tmp = False
if tmp == False:
print('NO')
else:
for x in seq:
print(x)
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
[Algorithm] 1일1솔 - 백준 1904 01타일 (python3) (0) | 2022.03.09 |
---|---|
[Algorithm] 1일1솔 - 백준 9184 신나는 함수 실행 (python3) (0) | 2022.02.08 |
[Algorithm] 1일1솔 - 백준 9663 스도쿠 (python3) (0) | 2022.01.24 |
[Algorithm] 1일1솔 - 백준 14889 스타트와 링크 (python3) (0) | 2022.01.21 |
[Algorithm] 1일1솔 - 백준 14888 연산자 끼워넣기(python3) (0) | 2022.01.20 |
Comments