https://www.acmicpc.net/problem/1063
1063번: 킹
8*8크기의 체스판에 왕이 하나 있다. 킹의 현재 위치가 주어진다. 체스판에서 말의 위치는 다음과 같이 주어진다. 알파벳 하나와 숫자 하나로 이루어져 있는데, 알파벳은 열을 상징하고, 숫자는
www.acmicpc.net
나의 코드
king, stone, count = input().split()
dict_dir = {'R': [1, 0], 'L': [-1, 0], 'B': [0, -1], 'T': [0, 1], 'RT': [1, 1], 'LT': [-1, 1], 'RB': [1, -1], 'LB': [-1, -1]}
king_x = ord(king[0])-65
king_y = int(king[1])-1
stone_x = ord(stone[0])-65
stone_y = int(stone[1])-1
count = int(count)
moves = list(input() for _ in range(count))
while moves:
x, y = dict_dir[moves.pop(0)]
king_x = king_x + x
king_y = king_y + y
if 0 <= king_x < 8 and 0 <= king_y < 8:
if (king_x == stone_x) and (king_y == stone_y):
stone_x = stone_x + x
stone_y = stone_y + y
if 0 <= stone_x < 8 and 0 <= stone_y < 8:
continue
else:
stone_x -= x
stone_y -= y
if (king_x == stone_x) and (king_y == stone_y):
king_x -= x
king_y -= y
else:
king_x -= x
king_y -= y
king = chr(king_x + 65) + str(king_y + 1)
stone = chr(stone_x + 65) + str(stone_y + 1)
print(king)
print(stone)
결과

방향에 따라 움직일 위치를 딕셔너리에 넣고 위치를 이동할 때마다 그 위치를 재할당하는 방법으로 문제를 풀었다. 이렇게 오래 풀 문제가 아닌데.. 멍하다멍해0_0
'스터디 1일 1커밋' 카테고리의 다른 글
| 240427 [BOJ/백준] 19637. IF문 좀 대신 써줘 (0) | 2024.04.27 |
|---|---|
| 240427 [BOJ/백준] 1012. 유기농 배추 (0) | 2024.04.27 |
| 240422 [BOJ/백준] 1026. 보물 (0) | 2024.04.22 |
| 240422 [BOJ/백준] 17390. 이건 꼭 풀어야 해! (0) | 2024.04.22 |
| 240420 [BOJ/백준] 3187. 양치기 꿍 (1) | 2024.04.20 |