공개일 - 2022.08.10. 14:00
종료일 - 2022.08.23. 23:59
제한시간 180분
3차는 문제 자체가 어려운건 아니였으나, 문제를 이해하는데 시간이 너무 오래 걸렸습니다..
총 4문제였고, 2,3번에서 시간을 너무 많이 써서 4번을 풀지 못했습니다.
1번 문제는 콜라병 갯수 구하기 문제입니다.
저는 단순하게 문제조건 그대로 for if 조건 식을 짜서 풀었습니다.
총 콜라병의 갯수 n
이 주어지고, a
만큼 반납하면 b
만큼 돌려받을 수 있습니다.
콜라병을 최대로 돌려받을 수 있는 수를 구하는 문제입니다.
남은 콜라병이 a
보다 작으면 교환 할 수 없습니다.
제한사항📌
- 1 ≤
b
<a
<n
≤ 1,000,000- 정답은 항상 int 범위를 넘지 않게 주어집니다.
def solution(a, b, n):
answer = 0
while n >= a:
answer += (m//a)*b
n = n % a + (n//a)*b
return answer
사실, 간단한 문제라서 딱히 설명은 하지 않고 넘어가겠습니다.
2번 문제에서 삽질을 많이 했습니다.
스택알고리즘을 사용하는 문제입니다.
ingredient
정수 배열에 조리 순서로 햄버거 재료가 들어있습니다.
이 순서에서 [빵, 야채, 고기, 빵] 순으로만 햄버거를 만들 수 있습니다.
제한사항📌
- 1 ≤
ingredient
의 길이 ≤ 1,000,000ingredient
의 원소는 1,2,3 중 하나의 값이며, 순서대로 빵, 야채, 고기를 의미합니다.
from collections import deque
def solution(ingredient):
answer = 0
hamburg = deque()
for i in ingredient:
hamburg.append(i)
if len(hamburg) >= 4:
tmp = deque()
for _ in range(4): #뒤에서부터 4개를 꺼내서 tmp에 저장
tmp.appendleft(hamburg.pop())
if tmp == deque([1,2,3,1]): #햄버거를 만들 수 있는 조건인지 확인
answer += 1
else:
hamburg.extend(tmp) #안된다면 hamburg배열에 추가
return answer
처음코드를 짰을 때는 배열 하나를 만들어서 1일때의 조건과 2일때의 조건 3일때의 조건을 만들어서 했는데,
어째서인지 히든케이스 몇개를 통과를 못했습니다.
3번 문제는 문제를 이해하는데 시간이 걸렸습니다.
문제를 이해한 뒤에도 곳곳의 함정? 때문에 문제를 찾느라 애를 먹었습니다.
1부터 출발해서 distance
의 거리까지 가는동안 경비병의 근무시간에 발각 되지 않고 갈 수 있는 최대 거리를 구하는 문제입니다.
경비병마다 근무시간과 휴식시간이 있고, 감시하는 구간이 정해져있습니다.
제한사항📌
- 10 ≤
distance
≤ 10,000,000- 1 ≤
scope
의 길이,times
의 길이 ≤ 1,000
-scope[i]
는 i+1번째 경비병이 감시하는 구간입니다.
-scope[i]
를 [a, b]라고 했을 때, (a!=b)입니다.
-scope[i]
는 정렬되어 있지 않을 수 있습니다.
- 1 ≤
scope
의 원소 ≤ 10times[i]
는 i+1번째 경비병의 [근무 시간, 휴식 시간]입니다.
def solution(distance, scope, times):
answer = distance
for i in range(len(scope)):
work, rest = times[i]
start, end = scope[i]
big = max(start, end)
small = min(start, end)
for j in range(small, big + 1):
cal = j%(work+rest)
if cal <= work and cal !=0:
answer = min(answer, j)
return answer
문제 접근 방법은 1부터 distance
거리까지 다 체크하는 것이 아니라 경비병의 근무 범위만 체크하는 것 입니다.
그리고 그 근무 범위일때 하나라도 근무이면 answer
에 최소 값을 저장하면 서 반복하는 문제입니다.
저는 근무 범위가 [큰 수, 작은 수]로 나오는 줄 알고 한참을 삽질했습니다.
4번 문제는 시간 부족으로 풀지 못했습니다..
모의고사 3개를 풀어봤는데, 성장한거 같으면서도 아직은 조금 부족한 것 같습니다.
✋ 앞으로도 꾸준히 문제를 풀어나가야겠습니다.