[백준 1874번 문제, 파이썬3] 스택 수열

2023. 7. 10. 14:43·정리 전 게시글/공부 관련

문제

문제

스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last in First out) 특성을 가지고 있다.

1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 수 있다. 이때, 스택에 push하는 순서는 반드시 오름차순을 지키도록 한다고 하자. 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지, 있다면 어떤 순서로 push와 pop 연산을 수행해야 하는지를 알아낼 수 있다. 이를 계산하는 프로그램을 작성하라.

입력

첫 줄에 n (1 ≤ n ≤ 100,000)이 주어진다. 둘째 줄부터 n개의 줄에는 수열을 이루는 1이상 n이하의 정수가 하나씩 순서대로 주어진다. 물론 같은 정수가 두 번 나오는 일은 없다.

출력

입력된 수열을 만들기 위해 필요한 연산을 한 줄에 한 개씩 출력한다. push연산은 +로, pop 연산은 -로 표현하도록 한다. 불가능한 경우 NO를 출력한다.


코드

import sys
from collections import deque

cnt = int(sys.stdin.readline())
input_numbers = deque([int(sys.stdin.readline().strip()) for _ in range(cnt)])
max_number = 0
stack = deque()
answer = deque()

for i, v in enumerate(input_numbers):
    if v > max_number:
        for u in range(max_number + 1, v + 1):
            stack.append(u)
            answer.append('+')

    pop_number = stack.pop()

    if pop_number == v:  # 스택의 pop 숫자와 현재 숫자가 같으면 진행 아니면 종료 
        max_number = max(max_number, pop_number)    # 최대값 찾기
        answer.append('-')
    else:
        print('NO')
        break

else:    # break 종료되지 않고 정상적으로 종료될 경우에만 answer 출력
    print(*answer, sep='\n')

해결

백준은 쓸데없는데 문제를 이해하지 못하게 적어놔서 짜증난다. 알고리즘은 크게 어렵지 않다. 유튜브에 누가 친절히 올려둬서 그거 보고 풀었다.

 


참고

https://youtu.be/byCxMbgzEVM

 

 

 

저작자표시 (새창열림)

'정리 전 게시글 > 공부 관련' 카테고리의 다른 글

파이썬 슬랙 챗봇 만들기 Slack Python ChatBot 코드 최신정보  (0) 2023.07.11
티스토리에 움짤 이모티콘 올리는 방법 feat. Tenor  (0) 2023.07.11
[백준 1316번 문제, 파이썬3] 그룹 단어 체커  (0) 2023.06.05
[백준 1417번 문제, 파이썬3] 국회의원 선거  (0) 2023.06.04
운영체제 - 식사하는 철학자 문제와 교착상태에 대해 알아보기  (1) 2023.06.04
'정리 전 게시글/공부 관련' 카테고리의 다른 글
  • 파이썬 슬랙 챗봇 만들기 Slack Python ChatBot 코드 최신정보
  • 티스토리에 움짤 이모티콘 올리는 방법 feat. Tenor
  • [백준 1316번 문제, 파이썬3] 그룹 단어 체커
  • [백준 1417번 문제, 파이썬3] 국회의원 선거
aptenia
aptenia
공부하면서 배운 것들
  • aptenia
    새벽의 아이디어
    aptenia
  • 전체
    오늘
    어제
    • 분류 전체보기 (277)
      • f1tenth (2)
      • 개발 관련 아무거나 (1)
      • 정리 전 게시글 (268)
        • 개발 관련 (25)
        • 정보 관련 (19)
        • 공부 관련 (224)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 네이버 블로그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    이것이자바다연습문제
    컨텍스트스위칭
    반복하지않는수
    마크스크립트
    이것이자바다
    프로그래머스PCCE
    C++강좌
    티스토리스킨편집
    프로그래머스
    티스토리반응형2스킨편집
    안드로이드
    콜라츠추측
    마크
    C언어강좌
    캡스톤디자인
    마인크래프트스크립트
    이것이자바다확인문제
    파이썬
    공개SW개발자대회
    백준
    스크롤바CSS
    일본규슈공업대학교
    C언어
    파이어베이스
    마인크래프트강화스크립트
    마인크래프트
    빅데이터공모전
    c언어초보
    자바
    티스토리HTML
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
aptenia
[백준 1874번 문제, 파이썬3] 스택 수열
상단으로

티스토리툴바