https://github.com/Dev-Guccin
Guccin
https://github.com/Dev-Guccin
전체 방문자
오늘
어제
  • 분류 전체보기 (172)
    • 알고리즘 (140)
    • 삽질방지 (13)
    • SystemHacking (1)
    • 일상 (4)
    • 개발 (8)
    • 스프링 부트 REST API 개발일지 (5)
    • JPA (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 백준
  • 유클리드호제법
  • 그리디
  • counter
  • Python
  • 백트래킹
  • 파이썬
  • 이분탐색
  • DFS
  • 재귀
  • 재귀함수
  • 최대공약수
  • MST
  • 다이나믹프로그래밍
  • 최단경로
  • 스택
  • 이분 탐색
  • DP
  • python3
  • BFS
  • 최소힙
  • 프로그래머스
  • heapq
  • LIS
  • 큐
  • 12015
  • 유니온 파인드
  • 그래프
  • 다이나믹 프로그래밍
  • 다익스트라

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
https://github.com/Dev-Guccin

Guccin

알고리즘

백준 1874 풀이 (스택 수열, 스택)

2021. 3. 4. 23:35

문제는 그냥 스택으로 풀어주면된다. 스택을 구성하여 값을 넣었다가 뺐다가 이리저리 하는 문제이다.

 

문제는 4가 나오면

[1,2,3,4] 까지 받고 4를 반환 => [1,2,3]

3이 나오면 

[1,2,3] 에서 3을 반환 => [1,2]

요런 식으로 동작한다. 좋은 점은 오름차순으로 push되기 때문에 값을 계속 해서 증가시키며 push를 하면 된다.

조심해야할점은 각 값을 받으면서 "+"나 "-"를 op리스트에 쌓아준다.

그러다가 문제가 있으면 "NO"를 반환하게 하고, 끝까지 잘 동작하면 "+","-"를 차례로 반환해주면된다.

import sys
n = int(input())
stack = []
op = []
count =1
for _ in range(n):
    num = int(sys.stdin.readline())
    while count <= num:
        stack.append(count)
        op.append("+")
        count += 1
    if stack[-1] == num:
        op.append("-")
        stack.pop()
    else:
        print("NO")
        break
if len(stack) == 0:
    for i in op:
        print(i)

'알고리즘' 카테고리의 다른 글

백준 18258 파이썬 풀이 (큐 2, deque)  (0) 2021.03.09
백준 17298 풀이 (오큰수, 스택)  (0) 2021.03.08
백준 4949 풀이 (균형잡힌 세상, 스택)  (0) 2021.03.04
백준 10773 풀이 (sys.stdin.readline())  (0) 2021.03.04
백준 10828 풀이 (스택, sys.stdin.readline, 입력속도 높이기)  (0) 2021.03.04
    '알고리즘' 카테고리의 다른 글
    • 백준 18258 파이썬 풀이 (큐 2, deque)
    • 백준 17298 풀이 (오큰수, 스택)
    • 백준 4949 풀이 (균형잡힌 세상, 스택)
    • 백준 10773 풀이 (sys.stdin.readline())
    https://github.com/Dev-Guccin
    https://github.com/Dev-Guccin
    https://github.com/Dev-Guccin

    티스토리툴바