반응형
리뷰
다른 구현문제에 비해 쉬웠다. 괜히 정답률이 40% 이상 되는게 아닌가 보다.
문제 풀이
- 방향 이동에 대하여 딕셔너리로 구현해 주었다.
- 왕과 돌의 초기 좌표를 ord와 int를 통해 정수값으로 각각 초기화 해줬다.
- 각 이동이 진행될때 이동 후 왕의 좌표를 초기화 해주고 해당 좌표가 돌이랑 같을 경우 즉, 돌을 밀어내야 할 경우 이동 후 돌의 좌표를 받아왔다.
- 돌의 좌표가 체스판을 벗어나지 않을 경우 돌을 이동 시키고 왕의 좌표를 이동 전 돌의 좌표로 설정해 준다.
- 돌을 만나지 않았을 경우 왕이 이동할 좌표가 체스판 밖이 아니라면 왕을 해당 위치로 이동시켰다.
- 이동 작업이 끝난 후 chr와 str을 통해 좌표를 문자열로 변환 후 출력해 주었다.
참고 사항
없음
정답 코드
def q1063():
# 백준 1063번 킹 파이썬
k, r, n = input().split()
dic = {'R': (1, 0), 'L': (-1, 0), 'B': (0, -1), 'T': (0, 1),
'RT': (1, 1), 'LT': (-1, 1), 'RB': (1, -1), 'LB': (-1, -1)}
k_pos = [(ord(k[0]) - 64), int(k[1])]
r_pos = [(ord(r[0]) - 64), int(r[1])]
for _ in range(int(n)):
d = input()
next_k_pos = [k_pos[0] + dic[d][0], k_pos[1] + dic[d][1]]
if next_k_pos == r_pos:
next_r_pos = [r_pos[0] + dic[d][0], r_pos[1] + dic[d][1]]
if 1 <= next_r_pos[0] <= 8 and 1 <= next_r_pos[1] <= 8:
k_pos = r_pos
r_pos = next_r_pos
elif 1 <= next_k_pos[0] <= 8 and 1 <= next_k_pos[1] <= 8:
k_pos = next_k_pos
print(chr(k_pos[0] + 64) + str(k_pos[1]))
print(chr(r_pos[0] + 64) + str(r_pos[1]))
q1063()
728x90
반응형
'알고리즘 공부 > 파이썬(Python)' 카테고리의 다른 글
SWEA 10965번 D3 제곱수 만들기 파이썬 (0) | 2024.06.30 |
---|---|
백준 3085번 사탕 게임 파이썬 (0) | 2024.06.30 |
백준 2527번 직사각형 파이썬 (0) | 2024.06.28 |
백준 10158번 개미 파이썬 (4) | 2024.06.28 |
백준 2477번 참외밭 파이썬 (0) | 2024.06.27 |