728x90
안녕하세요 코딩테스트 글은 오랜만입니다.
사실 코딩테스트를 다시 시작한건 보름정도 됐습니다만 블로그 업로드가 힘들어서 올리지 않고 있었어요
그 동안 바뀌게 된 점은 java가 아닌 python으로 코딩테스트를 준비하기로 했다는 것과
프로그래머스가 아닌 백준 코딩을 이용하고 있다는 점입니다.
오늘 풀어본 문제는 백준 10828 스택 문제 solved기준 실버 4 문제입니다.
https://www.acmicpc.net/problem/10828
소요시간은 약 20~30분 걸린거 같습니다.
import sys
# 명령의 수
N = int(input())
# 스택 리스트 정의
stack = []
# 결과 리스트 정의
result = []
def push(X):
stack.append(X)
def pop():
if len(stack) != 0:
return result.append(stack.pop())
else :
return result.append(-1)
def size():
return result.append(len(stack))
def empty():
if len(stack) == 0:
return result.append(1)
else :
return result.append(0)
def top():
if len(stack) != 0:
return result.append(stack[-1])
else :
return result.append(-1)
for i in range(N):
Input_Command = list(sys.stdin.readline().split())
if len(Input_Command) == 2:
Input_X = int(Input_Command[1])
push(Input_X)
elif Input_Command[0] == "pop":
pop()
elif Input_Command[0] == "size":
size()
elif Input_Command[0] == "empty":
empty()
elif Input_Command[0] == "top":
top()
for i in range(len(result)):
print(result[i])
일단 가장 처음 명령의 개수를 입력 받습니다.
입력받은 개수에 따라 for문을 돌리구요
그리고 스택을 저장할 리스트와 결과를 출력할 리스트를 만들었습니다.
그 밑에 명령어에 따른 함수를 정의해 놨습니다.
그 다음 명령어를 입력받는데 입력받는 명령어를 list형식으로 받아서
리스트의 크기가 2라면 push 명령어이기 때문에 이를 처리하도록 했습니다.
나머지는 if문을 통해 만들어진 함수를 출력하도록했습니다.
맨 마지막에는 저장된 결과값들을 순서대로 출력합니다.
설명할 게 없는 쉬운 문제였던거 같습니다.
이 문제에서 가장 큰 수확은 list에 pop()이라는 메소드를 알게된 겁니다.
이 메소드는 가장 마지막에 있는 값을 list에서 삭제하고 그 값을 list에서 삭제합니다.
반응형
'기초 공부 > 코딩테스트 연습' 카테고리의 다른 글
[코딩테스트 #4] 전화번호 목록(해시) level2 - java (0) | 2020.02.18 |
---|---|
[코딩테스트 #3] k번째 수(정렬) level1 - java (0) | 2020.02.11 |
[코딩테스트 #2] 완주하지 못한 선수(해시) level1 - java (0) | 2020.02.06 |
[코딩테스트 #1] 문자열 압축(2020 KAKAO BLIND RECRUITMENT) level1 - java (0) | 2020.02.02 |