Letcode 9월 17일
On an infinite plane, a robot initially stands at (0, 0) and faces north. The robot can receive one of three instructions:
"G": 1 단위로 직진하기;
"L": 왼쪽으로 90도 돌기;
"R": 오른쪽으로 90도 회전합니다.
로봇은 주어진 지령을 순서대로 집행하고 이 지령들을 영원히 반복한다.
평면에 원 하나만 존재하면 로봇이 이 원을 영원히 떠나지 않을 때true로 돌아간다.
예 =
"""
입력: "LGLGG"
출력:트루
설명:
로봇은 (0,0)에서 (0,2)로 이동해 180도 회전한 다음 (0,0)로 돌아간다.
이 지령을 반복할 때 로봇은 원점을 중심으로 하는 반경이 2인 원 안에 유지된다.
"""
솔루션 -
class Solution:
def isRobotBounded(self, instructions: str) -> bool:
state_transitions = {
'jl': '-i',
'-jl': 'i',
'il': 'j',
'-il': '-j',
'jr': 'i',
'-jr': '-i',
'ir': '-j',
'-ir': 'j'
}
curr_dir = 'j'
start = (0, 0)
for ins in instructions:
if ins == 'G':
if curr_dir == 'j':
start = (start[0], start[1] + 1 )
if curr_dir == '-j':
start = (start[0], start[1] - 1 )
if curr_dir == 'i':
start = (start[0] + 1, start[1] )
if curr_dir == '-i':
start = (start[0] - 1, start[1] )
if ins == 'L':
curr_dir = state_transitions[curr_dir+'l']
if ins == 'R':
curr_dir = state_transitions[curr_dir+'r']
if start == (0, 0):
return True
else:
if curr_dir != 'j':
return True
return False
Reference
이 문제에 관하여(Letcode 9월 17일), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/skbhagat40/leetcode-september-day-17-5dk0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)