Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- typescript
- firebase
- 안드로이드
- javascript
- k for k
- Python
- 스택
- 백준 스택 시간초과 python
- TS
- 최적화
- stdin vs input
- 코딩테스트
- kotlin
- nodejs
- C++
- HTML
- next Link
- 파이썬
- 타입스크립트
- react
- 리액트
- Android
- 알고리즘
- NPM
- 백준 스택
- 파이어베이스
- CSS
- 프론트엔드
- JS
- 자바스크립트
Archives
- Today
- Total
sooleeandtomas
[day6] 백준 1874번 스택 수열 (Python) 본문
백준 1874 스택 수열
문제를 이해하는데만 2시간이 걸린 것 같다.
내 생각엔 저 문제만으로는 절.대.로 이해할 수 없다. 💢
아래 글들과 내용들을 참고해야 이해할 수 있다.
https://hongcoding.tistory.com/39
https://www.youtube.com/watch?v=byCxMbgzEVM
문제 설명
이 문제는 스택의 FILO의 개념을 익히는데 도움을 주는 문제이다.
주어진 인풋값과 동일해질때까지 스택에 숫자를 append해가고,
동일해진다면 스택에 쌓인 수를 pop 해준다.
만약 인풋값이 스택에서 pop할 수 있는 마지막 숫자가 아니라면 에러를 뿜게된다.
! pop(0)안되죠~ 무조건 맨 마지막 원소를 pop해야한다.
풀이 설명
준비물
stack = []
answer = []
cur = 1
1. n번을 돌며 인풋값을 받는다.
2.현재 인풋값이 cur과 같아질때까지 반복
stack.append(cur)
answer.append('+')
cur += 1 (*이부분의 순서 중요 아래 코드에 설명)
if stack[-1] == 인풋값이라면:
stack.pop()
answer.append('-')
else:
print("NO")
참고 코드
import sys
def solution(n):
stack = []
answer = []
flag = 0 # 중단된 반복문인지 알기위해
cur = 1 # 1로 시작해야함. :10에서 스택에 쌓을 더하기를 실행할 때 1부터 쌓아줘야함.
for i in range(n):
num = int(sys.stdin.readline());
while cur <= num:
stack.append(cur)
answer.append('+')
cur += 1
# 꼭 append이후에 실행해야 함. :9에서 값 비교할때의 값과 stack[-1]의 값이 동일해야함.
# 위의 그림에서 파란색 cur = $ 부분 참고
print(stack, cur)
if stack[-1] == num:
stack.pop()
answer.append('-')
else:
# stack[-1]값부터 pop을 해줘야 하는데, 인풋값이 stack[-1]과 다르다면
# FILO 스택의 순서에서 어긋남. 스택이 스택이 아니게됨.
print("NO")
flag = 1
break
if flag == 0:
for i in answer:
print(i)
N = int(sys.stdin.readline())
solution(N)
코드출처: https://hongcoding.tistory.com/39
'코딩테스트 알고리즘 > 스택' 카테고리의 다른 글
[day14] 백준 9093번 스택 (단어 뒤집기) python (0) | 2022.10.11 |
---|---|
[day5] 백준 - 스택 제로 (python) (0) | 2022.09.29 |
[day5] 백준 10828번 - 스택 스택 (python) (feat. 파이썬 sys.stdin.readline()) (0) | 2022.09.29 |
[day1] 코딩테스트 알고리즘 - 스택 (올바른 괄호) (0) | 2022.09.26 |
Comments