로봇이 주어진 명령어 L(Left), R(Right), U(Up), D(Down) 대로 이동하여 모든 명령어를 수행하였을 때,
본래의 지점으로 돌아왔는지에 대한 여부를 반환하는 프로그램을 짜라.
문제 풀이
시작점 (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 = 0, 0
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 |
'온라인 코딩 테스트 문제 풀이 > LeetCode 문제 풀이' 카테고리의 다른 글
Python으로 푸는 LeetCode 48. Rotate Image (Medium) (0) | 2019.04.19 |
---|---|
Python으로 푸는 LeetCode 832. Flipping an Image (Easy) (0) | 2019.04.18 |
Python으로 푸는 LeetCode 67. Add Binary (Easy) (0) | 2019.04.14 |
Python으로 푸는 LeetCode. 58. Length of Last Word (Easy) (0) | 2019.04.11 |