내 풀이
size = int(input())
direction = list(input().split())
result = [1, 1]
for i in range(len(direction)):
if ((direction[i] == 'L' and result[1] == 1)
or (direction[i] == 'U' and result[0] == 1)
or (direction[i] == 'R' and result[1] == size)
or (direction[i] == 'D' and result[0] == size)):
continue
elif (direction[i] == 'L'):
result[1] = result[1] - 1
elif (direction[i] == 'U'):
result[0] = result[0] - 1
elif (direction[i] == 'R'):
result[1] = result[1] + 1
elif (direction[i] == 'D'):
result[0] = result[0] + 1
print(result[0], result[1])
정답
배운 점
오답노트 :
해당 문제를 풀면서 분명히 효율적인 방법이 있을텐데하면서 풀었지만 아직은 처음이다보니 생각이 잘 나지는 않았다.
특히 정답을 확인해보니 내가 푼 코드는 조건문이 많아서 효율적으로 일을 처리하지 못하는 느낌을 받았다.
dx, dy, move_types를 먼저 지정하는 것이 코드의 길이를 줄일 수 있고, 공간을 벗어나는 건 굳이 1 혹은 size과 같지 않아도 된다는 것을 깨닫고 배우게 되었다.
그리고 문자열은 굳이 list()로 안묶어도 저장이 가능하다.
문자열은 route = input().split() 바로 리스트에 저장이 되고
숫자는 route = list(map(int, input().split())) 해야한다.
'코테 공부 > Computer Algorithm' 카테고리의 다른 글
[2024 알고리즘 특강] 문자열/회문 (파이썬) (0) | 2024.05.16 |
---|---|
[이코테] 두 배열의 원소 교체 (파이썬) (0) | 2024.04.05 |
[이코테] 정렬 알고리즘 코드 정리 (파이썬) (0) | 2024.04.05 |
[이코테] 그리디 알고리즘 - 곱하기 혹은 더하기 (파이썬) (0) | 2024.03.28 |
[이코테] 그리디 알고리즘 - 1이 될 때까지 (파이썬) (0) | 2024.03.27 |