이번 강의에서는 백준 1874 문제와 1966,5397 문제를 학습하였다.
1. 1874
스택 문제로 이번 문제에서 핵심 아이디어 2가지는 다음과 같다.
1. 스택의 삽입
2. 스택에서 원소를 빼낼 때 내림차순을 유지할 수 있는가?
스택이 LIFO 성질을 가지고 있는것에 유의하여 코드를 작성하였다.
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)
2. 1966
이번 문제는 큐 문제이다.
큐의 특성을 활용하여 풀었다.
강의에서는 deque를 사용하지 않았으나,
파이썬에서 지원하는 deque를 사용하여 풀어보았다.
from collections import deque
n = int(input())
for i in range(n):
n,m = map(int, input().split())
q = list(map(int, input().split()))
idx = list(range(len(q)))
idx[m] = 'pv'
order =0
while True:
if q[0] == max(q):
order+=1
if idx[0] == 'pv':
print(order)
break
else:
q.pop(0)
idx.pop(0)
else:
q.append(q.pop(0))
idx.append(idx.pop(0))
3. 5397
스택을 활용한 문제이다.
시간이 꽤 걸렸는데 스택 두개를 활용하여 해결하면 된다.
1. 스택 두개를 만들고 두개의 중간 지점을 커서로 간주
2. 왼쪽 스택에 원소를 삽입.
3. 화살표가 나올 때 방향에 따라 각 스택으로 이동
test_case = int(input())
for i in range(test_case):
l = []
r=[]
data=input()
for i in data:
if i=='-':
if l:
l.pop()
elif i =='<':
if l:
r.append(l.pop())
elif i=='>':
if r:
l.append(r.pop())
else:
l.append(i)
l.extend(reversed(r))
print(''.join(l))
*수강 인증샷
"본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다."
패스트캠퍼스 온라인 강의 - 초격차 패키지 : 개발자 취업 합격 패스 With 코딩테스트, 기술면접 (fastcampus.co.kr)
728x90
'대외활동' 카테고리의 다른 글
패스트캠퍼스 Python 코딩테스트 강의 4주차 (2) | 2023.05.12 |
---|---|
패스트캠퍼스 Python 코딩테스트 강의 3주차 (0) | 2023.05.07 |
패스트캠퍼스 Python 코딩테스트 강의 1주차 (0) | 2023.04.23 |
코딩월드뉴스 에디터 2기 수료! (0) | 2021.06.30 |
[비전공자를 위한 쉬운 IT상식]악성코드란 무엇인가? (0) | 2021.06.30 |