본문으로 바로가기

로봇이 주어진 명령어 L(Left), R(Right), U(Up), D(Down) 대로 이동하여 모든 명령어를 수행하였을 때,

본래의 지점으로 돌아왔는지에 대한 여부를 반환하는 프로그램을 짜라.

LeetCode에서 푼 문제 리스트 보기

LeetCode에서 문제 보기

github에서 코드 보기

문제 풀이

시작점 (r,c) == (0,0)에서 상하좌우로 이동하였을 때 결국 (0,0)으로 돌아오면 된다. 상하는 r의 값을 1씩 빼거나 더하면 되고, 좌우의 경우 c의 값을 1씩 빼거나 더해주면 된다. 주어진 문자열을 순회하면서 조건에 따라 r이나 c를 이동시켰을 때, (r,c)의 결과값이 (0,0)인지 확인하면 된다.

파이썬 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
class Solution:
    def judgeCircle(self, moves: str-> bool:
 
        r, c = 00
        length = len(moves)
 
        if length % 2 != 0:
            return False
 
        for i in range(length):
            ch = moves[i]
 
            if ch == "R":
                c += 1
            elif ch == "L":
                c -= 1
            elif ch == "U":
                r += 1
            elif ch == "D":
                r -= 1
 
        if r == 0 and c == 0:
            return True
        return False
 
 
 
if __name__ == "__main__":
    s = Solution()
    print(s.judgeCircle(""))
    print(s.judgeCircle("UD"))
    print(s.judgeCircle("LL"))
 
cs