개발
home
♟️

[알고리즘] 백준 1063번 킹 python

Created
2022/07/10
Tags
Algorithm
Python
Simulation
2022-07-10 @이영훈

접근 방법

기본적인 시뮬레이션, 구현 문제입니다.
좌표를 이동할 때 제가 사용하는 기본적인 전략은 move_types과 dx, dy 변수를 정의해서 사용합니다.
그리고 이동했을 때의 위치에서 로직처리를 합니다. 이 문제에서는 체스판의 위치를 벗어나지 않았는지, 킹과 돌의 위치가 겹치는 지 이 두가지를 처리하면 됩니다.

파이썬 코드

king, stone, n = input().split() n = int(n) king = [ord(king[0]) - ord("A") + 1, int(king[1])] stone = [ord(stone[0]) - ord("A") + 1, int(stone[1])] move_types = ["R", "L", "B", "T", "RT", "LT", "RB", "LB"] dx = [1, -1, 0, 0, 1, -1, 1, -1] dy = [0, 0, -1, 1, 1, 1, -1, -1] for _ in range(n): move = input() idx = move_types.index(move) king_delta = [king[0] + dx[idx], king[1] + dy[idx]] stone_delta = [stone[0] + dx[idx], stone[1] + dy[idx]] if 1 <= king_delta[0] <= 8 and 1 <= king_delta[1] <= 8: if king_delta == stone: if 1 <= stone_delta[0] <= 8 and 1 <= stone_delta[1] <= 8: king = king_delta stone = stone_delta else: king = king_delta print(chr(king[0] + ord("A") - 1) + str(king[1])) print(chr(stone[0] + ord("A") - 1) + str(stone[1]))
Python
복사