CodingTest/Baekjoon

[baekjoon] 백준 1063번(파이썬): 킹

JunJangE 2022. 8. 9. 12:14

문제

 

1063번: 킹

8*8크기의 체스판에 왕이 하나 있다. 킹의 현재 위치가 주어진다. 체스판에서 말의 위치는 다음과 같이 주어진다. 알파벳 하나와 숫자 하나로 이루어져 있는데, 알파벳은 열을 상징하고, 숫자는

www.acmicpc.net

알고리즘

- 킹의 자표와 돌의 좌표를 아스키코드를 통해 x, y형태로 바꾼다.

- 킹이 움직이는 명령을 딕셔너리로 받아서 좌표 형태로 바꾼다.

- 반복문을 통해 명령을 입력받고 킹의 좌표와 돌의 좌표를 움직여준다.

코드

import sys


k, s, n = map(str, sys.stdin.readline().split())
k = list(map(int, [ord(k[0]) - 64, k[1]]))
s = list(map(int, [ord(s[0]) - 64, s[1]]))
order = {'R': [1, 0], 'L': [-1, 0], 'B': [0, -1], 'T': [0, 1], 'RT': [1, 1], 'LT': [-1, 1], 'RB': [1, -1], 'LB': [-1, -1]}

for i in range(int(n)):
    move = str(sys.stdin.readline().strip("\n"))
    kx = k[0] + order[move][0]
    ky = k[1] + order[move][1]

    if 0 < kx <= 8 and 0 < ky <= 8:
        if kx == s[0] and ky == s[1]:
            sx = s[0] + order[move][0]
            sy = s[1] + order[move][1]
            if 0 < sx <= 8 and 0 < sy <= 8:
                k = [kx, ky]
                s = [sx, sy]

        else:
            k = [kx, ky]

print(chr(k[0] + 64) + str(k[1]))
print(chr(s[0] + 64) + str(s[1]))


github

 

GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법

내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.

github.com