🐸 문제 정보
🤖 알고리즘
구현
⏱️ 풀이 시간
60m +
📝 풀이
문제가 난해하고 지문이 불친절해서 진짜 코테를 보는 것 같았다.
인덱스로 접하는 경우가 많은 것 같아, 처음에는 리스트로 풀다가 후에 회전 문제를 고치면서 deque로 바꿨다.
단계를 잘 나누어서 풀어야하는 것 같다.
- 벨트와 로봇 큐를 시계 방향으로 1만큼 회전
- 역순 순회하면서 로봇 이동
- 현재 자리에 로봇이 있어야함
- 시계 방향 다음 자리에 로봇이 없어야함
- 시계 방향 다음 자리에 벨트 내구도가 남아있어야함
- 로봇이 내리는 점으로 이동하면 False로 바꿔주기
- 올리는 곳에 로봇이 없고 벨트의 내구도가 남아있다면 로봇 올려주기
- 올리면서 내구도 1 감소
사실 시간이 오래 걸렸던 부분은 3단계의 로봇을 올리는 부분이다.
애초에 문제에서 올리는 곳에 로봇이 없을 수 밖에 없는 로직이기 때문에, 그냥 로봇을 올린다고 했는데 계속해서 테케를 통과하지 못했다.
이후 로봇이 없는 경우에만 로봇을 올려준다고 수정하자 바로 통과할 수 있었다.
구현 자체가 어려운 문제는 아니었으나, 기업 코테의 불친절한 지문을 체감할 수 있는 문제였다.
더보기
틀린코드
import sys
from collections import deque
input = sys.stdin.readline
n, k = list(map(int, input().rstrip().split()))
belt = deque(list(map(int, input().rstrip().split())))
robots = deque([False] * n)
def belting(): # 1단계
belt.rotate(1)
robots.rotate(1)
robots[-1] = False
def moving(): # 2단계
for i in range(n - 2, 0, -1):
if (robots[i]) and (not robots[i + 1]) and (belt[i + 1] > 0):
robots[i] = False
robots[i + 1] = True
belt[i + 1] -= 1
robots[-1] = False
def setting(): # 3단계
if belt[0] > 0:
belt[0] -= 1
robots[0] = True
res = 0
while True:
res += 1
belting()
moving()
setting()
if belt.count(0) >= k: break
print(res)
🧑💻 나의 답
# pypy3
import sys
from collections import deque
input = sys.stdin.readline
n, k = list(map(int, input().rstrip().split()))
belt = deque(list(map(int, input().rstrip().split())))
robots = deque([False] * n)
def belting(): # 1단계
belt.rotate(1)
robots.rotate(1)
robots[-1] = False
def moving(): # 2단계
for i in range(n - 2, 0, -1):
if (robots[i]) and (not robots[i + 1]) and (belt[i + 1] > 0):
robots[i] = False
robots[i + 1] = True
belt[i + 1] -= 1
robots[-1] = False
def setting(): # 3단계
if (not robots[0]) and (belt[0] > 0):
robots[0] = True
belt[0] -= 1
res = 0
while True:
res += 1
belting()
moving()
setting()
if belt.count(0) >= k: break
print(res)
'PS > 문제풀이' 카테고리의 다른 글
백준 1439 뒤집기 Python (1) | 2024.01.04 |
---|---|
백준 2847 게임을 만든 동준이 Python (1) | 2024.01.04 |
백준 14940 쉬운 최단거리 Python (2) | 2024.01.04 |
백준 2607 비슷한 단어 Python (2) | 2024.01.04 |
백준 20125 쿠키의 신체 측정 Python (2) | 2024.01.04 |