백준 28278 - 스택2(Python)

연수·2023년 9월 23일

코딩테스트

목록 보기
1/10

내 제대로 된 첫 코딩테스트 공부이자 첫 게시물이다.
문제를 풀면서 헷갈렸던 내용이나 실수했던 내용, 지속적으로 기억됐으면 하는 내용을 기록하기 위해 시작했다. 다소 우당탕탕 지나가는 글이지만 앞으로 더 다듬어지길 바라면서 ✨

문제: https://www.acmicpc.net/problem/28278

내 코드 👇

stack = []
import sys 

input = sys.stdin.readline 
num = int(input()) # 초기 값 받음

for i in range(num):
    # sys.stdin.readline을 사용하면 불러올 때 개행문자(\n) 없애야함
    data = list(map(int, input().rstrip().split(' ')))
    #data = input().split() # 이렇게 사용하면 리스트로 묶여서 바로바로 들어가긴 함
    # 개행문자 제거도 필요없고 리스트로 지정도 안해줘도 됨(대신 int로 나오지 않으니 이 부분만 수정하면 됨)
    if data[0] == 1:
        stack.append(data[1])
    elif data[0] == 2:
        if not stack:
            print(-1)
        else:
            p_num = stack[-1]
            stack.pop()
            print(p_num)
    elif data[0] == 3:
        print(len(stack))
    elif data[0] == 4:
        if not stack:
            print(1)
        else:
            print(0)
    elif data[0] == 5:
        if not stack:
            print(-1)
        else:
            print(stack[-1])

여러 열 입력을 받기 위해선 sys.stdin.readline 사용하기 ⭐️

코딩테스트 문제에 익숙하지 않다보니 아무래도 입력값을 받는 부분부터 헷갈렸다.
sys.stdin.readline을 사용해 input() 값을 받고 예제 값과 같이 여러 열이 존재할 때 한 줄 한 줄 입력값으로 받아 사용되는 방식이다.
입력 부분은 여러 문제를 풀어보면서 익히는게 가장 좋은 방법인 것 같다.

profile
하고 싶은건 다 하자 👻

0개의 댓글