이번 강의에서는 백준 10828, 10773, 1874번을 학습하였다.
세 문제 모두 스택 구현 문제로 스택의 기본 원리를 파악할 수 있는 시간이었다.
1.10828
스택 문제로 스택의 기본 메소드들을 구현하는 문제였다.
실버 5단계였는데 어렵지 않게 통과할 수 있었다.
파이썬에서의 스택은 단순 리스트를 사용하여 구현할 수 있으며
append(), pop() 메소드를 사용한다.
import sys
input = sys.stdin.readline
n = int(input())
stack=[]
for i in range(n):
com = input().split()
if com[0] == 'push':
stack.append(com[1])
elif com[0] == 'pop':
if len(stack)>0:
x = stack.pop()
print(x)
else:
print(-1)
elif com[0] == 'size':
print(len(stack))
elif com[0] == 'empty':
if len(stack)>0:
print(0)
else:
print(1)
elif com[0] == 'top':
if len(stack)>0:
print(stack[-1])
else:
print(-1)
2.10773
단순한 스택 문제이다.
입력으로 0이 주어진다면 가장 최근에 입력된 원소를 제거해주면 되는데
스택의 pop() 메서드를 사용하여 제거하면 된다.
짧은 코드로 구현이 가능한 문제였다.
import sys
input = sys.stdin.readline
stack=[]
for _ in range(int(input())):
n = int(input())
if n == 0:
stack.pop()
else:
stack.append(n)
print(sum(stack))
3.1874
스택을 시뮬레이션 하듯이 생각해보면
아이디어를 찾아낼 수 있다.
특정한 수 x가 될 때까지 스택에 넣고 x를 pop한다.
만약 스택의 top()보다 x가 더 작다면 수열을 만드는 것이 불가능함을 알 수 있다.
n = int(input())
stack = []
answer = []
flag = 0
cur = 1
for i in range(n):
num = int(input())
while cur <= num:
stack.append(cur)
answer.append("+")
cur += 1
if stack[-1] == num:
stack.pop()
answer.append("-")
else:
print("NO")
flag = 1
break
if flag == 0:
for i in answer:
print(i)
*수강 인증샷
"본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다."
패스트캠퍼스 온라인 강의 - 초격차 패키지 : 개발자 취업 합격 패스 With 코딩테스트, 기술면접 (fastcampus.co.kr)
728x90
'대외활동' 카테고리의 다른 글
[서울 웹3.0 페스티벌 2023 ] 2박 3일 첫 해커톤 후기 (0) | 2023.08.07 |
---|---|
패스트캠퍼스 Python 개발자 취업 합격 패스 with 코딩테스트, 기술면접 강의 4주차 강의 한 달 후기 (0) | 2023.05.17 |
패스트캠퍼스 Python 코딩테스트 강의 3주차 (0) | 2023.05.07 |
패스트캠퍼스 Python 코딩테스트 강의 2주차 (0) | 2023.04.26 |
패스트캠퍼스 Python 코딩테스트 강의 1주차 (0) | 2023.04.23 |