728x90
반응형
라인플러스 2019 상반기 인턴 채용 코딩테스트
from collections import deque
def solution(conyPosition, brownPosition):
time = 0
visit = [[0]*2 for _ in range(200001)]
q = deque()
q.append((brownPosition, 0))
while 1:
conyPosition += time
if conyPosition > 200000 or conyPosition < 0:
return -1
if visit[conyPosition][time%2]:
return time
for i in range(0, len(q)):
current = q.popleft()
currentPosition = current[0]
newTime = (current[1]+1)%2
newPosition = currentPosition - 1
if newPosition >= 0 and not visit[newPosition][newTime]:
visit[newPosition][newTime] = True
q.append((newPosition, newTime))
newPosition = currentPosition + 1
if newPosition < 200001 and not visit[newPosition][newTime]:
visit[newPosition][newTime] = True
q.append((newPosition, newTime))
newPosition = currentPosition * 2
if newPosition < 200001 and not visit[newPosition][newTime]:
visit[newPosition][newTime] = True
q.append((newPosition, newTime))
time += 1
728x90
반응형
'코딩해 > 코테준비' 카테고리의 다른 글
[프로그래머스 Golang] 문자열 다루기 기본 (0) | 2021.03.25 |
---|---|
[프로그래머스] C++ 연습문제 최댓값과 최솟값 (0) | 2020.11.06 |
[프로그래머스] Python 키패드 누르기(카카오 인턴십) (0) | 2020.10.06 |
[프로그래머스] Python 두 개 뽑아서 더하기 (월간 코드 첼린지) (0) | 2020.10.03 |
[프로그래머스 Python] 올바른 괄호 (연습문제) (0) | 2020.10.03 |