-
[Python] BOJ 28278 스택 2코딩테스트/백준 2025. 2. 2. 14:13
https://www.acmicpc.net/problem/28278
요구사항
- 시간 제한 2초
- 메모리 제한 1024MB
결론: 넉넉하게 편하게 풀자.
설계
- 1번 명령어 부터 5번 명령어 까지 if-else 문으로 분기해서 푼다.
- 실수로 부터 재설계 1
- 처음엔 cmd, num = map(int, input().split())
- for문안에서 위와 같이 입력을 받았다.
- 하지만 위의 경우 1번 명령만(정수 X를 스택에 넣는다.) 처리할 수 있기 때문에 탈락.
- 실수로 부터 재설계 2
- 문자열로 입력을 받는다.
- cmd = input()
- 이 경우 cmd[0] 이 첫 번째, cmd[1] = 공백, cmd[2] = 스택에 들어갈 정수
- 실수로 부터 재설계 3
- 위의 경우 스택에 넣을 정수가 일의 자리인 경우만 가능하다.
- 따라서 cmd[2:] 로 수정.
구현
import sys input = lambda: sys.stdin.readline().rstrip() cmd_line = int(input()) stack = [] for _ in range(cmd_line): cmd = input() if cmd[0] == '1': stack.append(int(cmd[2:])) elif cmd[0] == '2': if stack: print(stack.pop()) else: print(-1) elif cmd[0] == '3': print(len(stack)) elif cmd[0] == '4': if stack: print(0) else: print(1) else: if stack: print(stack[-1]) else: print(-1)
회고
오랜만에 문제를 풀기에 좋은 문제였다.
'코딩테스트 > 백준' 카테고리의 다른 글
[Python] BOJ 1269 대칭차집합 (0) 2025.02.06 [Python] BOJ 8595 히든넘버 (0) 2025.02.03 [Python] BOJ 7562: 나이트의 이동 (1) 2024.11.27 [Python] BOJ 9935: 문자열 폭발 (1) 2024.11.20 [Python] BOJ 10026: 적록색약 (0) 2024.11.19