풀이
- 우선 좌표에 대한 dictionary를 미리 만들어두어 간단하게 방향을 찾을 수 있도록 함.
- 이후 킹과 돌의 좌표값을 확인한 이후 주어지는 방향에 따른 조건 분기 처리를 하여 좌표 이동을 시킴
- 여기서 조금 코드가 길어진 부분은 킹은 움직일 수 있지만 돌이 더이상 이동할 범위를 벗어날 경우에 대한 부분으로
- 물론 더 좋은 코드가 있겠지만 아래와 같이 해결.
i
import sys
input = sys.stdin.readline
move = {
"T": [1,0],
"B": [-1,0],
"L": [0,-1],
"R": [0,1],
"LT": [1,-1],
"RT": [1,1],
"LB": [-1,-1],
"RB": [-1,1],
}
k,s,n = input().rstrip('\n').split()
k_pos,s_pos = [int(k[1]),ord(k[0])-64], [int(s[1]),ord(s[0])-64]
for _ in range(int(n)):
y,x = move[input().rstrip('\n')]
if 1<=k_pos[0]+y<=8 and 1<=k_pos[1]+x<=8:
if k_pos[0]+y == s_pos[0] and k_pos[1]+x == s_pos[1] and 1<=s_pos[0]+y<=8 and 1<=s_pos[1]+x<=8:
s_pos = [s_pos[0]+y,s_pos[1]+x]
elif k_pos[0]+y == s_pos[0] and k_pos[1]+x == s_pos[1] and not(1<=s_pos[0]+y<=8 and 1<=s_pos[1]+x<=8): continue
k_pos = [k_pos[0]+y,k_pos[1]+x]
print(chr(k_pos[1]+64)+str(k_pos[0]))
print(chr(s_pos[1]+64)+str(s_pos[0]))
'알고리즘' 카테고리의 다른 글
[백준, 파이썬, 1138번] 한 줄로 서기 (0) | 2023.12.26 |
---|---|
[백준, 자바, 1063번] 킹 (0) | 2023.12.22 |
[백준, 파이썬, 1059번] 좋은 구간 (0) | 2023.12.21 |
[백준, 자바, 1059번] 좋은 구간 (0) | 2023.12.21 |
[백준, 자바, 1051번] 숫자 정사각형 (1) | 2023.12.20 |