현제의 현재이야기
[백준/python] 1331 - 나이트투어 본문
chess = [[0] * 6 for _ in range(6)]
order = []
cnt = 0
for _ in range(36):
target = input()
target = list(target)
if target[0] == "A":
target[0] = 1
target[1] = int(target[1])
order.append(target)
elif target[0] == "B":
target[0] = 2
target[1] = int(target[1])
order.append(target)
elif target[0] == "C":
target[0] = 3
target[1] = int(target[1])
order.append(target)
elif target[0] == "D":
target[0] = 4
target[1] = int(target[1])
order.append(target)
elif target[0] == "E":
target[0] = 5
target[1] = int(target[1])
order.append(target)
elif target[0] == "F":
target[0] = 6
target[1] = int(target[1])
order.append(target)
for x, y in order:
if cnt != 0:
if (abs(order[cnt][0] - order[cnt-1][0]) == 1 and abs(order[cnt][1] - order[cnt-1][1]) == 2) or (abs(order[cnt][0] - order[cnt-1][0]) == 2 and abs(order[cnt][1] - order[cnt-1][1]) == 1):
pass
else:
print("Invalid")
quit()
if chess[x-1][y-1] == 1:
print("Invalid")
quit()
elif chess[x-1][y-1] == 0:
chess[x-1][y-1] = 1
cnt += 1
if (abs(order[0][0] - order[35][0]) == 1 and abs(order[0][1] - order[35][1]) == 2) or (abs(order[0][0] - order[35][0]) == 2 and abs(order[0][1] - order[35][1]) == 1):
print("Valid")
else:
print("Invalid")
| 알고리즘
우선 들어온 나이트들의 경로를 숫자로 바꾸어주고, 첫번째 for문에서 첫번째 if문이 나이트의 이동경로인가 확인해주고, 두번째 if문이 이미 방문한 이동경로인지 확인해고, 방문하지 않았다면 1로 바꾸어준다.
그리고 마지막에 첫번째 이동경로와 마지막 이동경로가 나이트의 경로인지 확인해준다.
| 알게된 점 및 후기
typeerror: 'str' object does not support item assignment
에러가 났었는데, 문자열은 인덱싱을 통해 값을 바꾸어 주는 것이 안됐다. 그래서 order를 list로 바꾸어준 후 인덱스를 통해서 바꾸고 append해주었다.
오랜만에 시간을 재면서 풀었는데 30분정도 걸렸다. 이런 쉬운 문제는 시간을 정하고 푸는 연습을 해야겠다.
'algorithm' 카테고리의 다른 글
[백준/python] 2164 - 카드2 (0) | 2022.09.29 |
---|---|
[백준/python] 2606 - 바이러스 (0) | 2022.09.28 |
[백준/python] 15787 - 기차가 어둠을 헤치고 은하수를 (1) | 2022.09.22 |
[백준/python] 18310 - 안테나 (0) | 2022.09.19 |
[백준/python] 2644 - 촌수계산 (1) | 2022.09.18 |
Comments