[BOJ 1063번] 킹(Python)

2024. 3. 27. 13:19· 코딩 테스트 준비/5정한
목차
  1. 📝 문제
  2. ✅ 풀이

📝 문제

💡 8*8크기의 체스판에 왕이 하나 있다.
킹의 현재 위치가 주어진다.

체스판에서 말의 위치는 다음과 같이 주어진다.
알파벳 하나와 숫자 하나로 이루어져 있는데,
알파벳은 열을 상징하고, 숫자는 행을 상징한다.

열은 가장 왼쪽 열이 A이고, 가장 오른쪽 열이 H까지 이고,
행은 가장 아래가 1이고 가장 위가 8이다.
예를 들어, 왼쪽 아래 코너는 A1이고, 그 오른쪽 칸은 B1이다.

킹은 다음과 같이 움직일 수 있다.
R : 한 칸 오른쪽으로
L : 한 칸 왼쪽으로
B : 한 칸 아래로
T : 한 칸 위로
RT : 오른쪽 위 대각선으로
LT : 왼쪽 위 대각선으로
RB : 오른쪽 아래 대각선으로
LB : 왼쪽 아래 대각선으로

체스판에는 돌이 하나 있는데,
돌과 같은 곳으로 이동할 때는, 돌을 킹이 움직인 방향과 같은 방향으로 한 칸 이동시킨다.

입력으로 킹이 어떻게 움직여야 하는지 주어진다.
입력으로 주어진 대로 움직여서 킹이나 돌이 체스판 밖으로 나갈 경우에는
그 이동은 건너 뛰고 다음 이동을 한다.
킹과 돌의 마지막 위치를 구하는 프로그램을 작성하시오.
⚙️ 입력 : 첫째 줄에 킹의 위치, 돌의 위치, 움직이는 횟수 N이 주어진다.
둘째 줄부터 N개의 줄에는 킹이 어떻게 움직여야 하는지 주어진다.
N은 50보다 작거나 같은 자연수이고, 움직이는 정보는 위에 쓰여 있는 8가지 중 하나이다.
⚙️ 출력 : 첫째 줄에 킹의 마지막 위치, 둘째 줄에 돌의 마지막 위치를 출력한다.

 

문제링크

 

1063번: 킹

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

www.acmicpc.net


✅ 풀이

king, stone, n = input().split()
move_dict = {
    '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 = move_dict[input()]
    if 65 <= ord(king[0]) + move[0] <= 72 and 1 <= int(king[1]) + move[1] <= 8:
        king = chr(ord(king[0])+move[0]) + str(int(king[1])+move[1])
        if king == stone:
            if 65 <= ord(stone[0]) + move[0] <= 72 and 1 <= int(stone[1]) + move[1] <= 8:
                stone = chr(ord(king[0])+move[0]) + str(int(king[1])+move[1])
            else:
                king = chr(ord(king[0])-move[0]) + str(int(king[1])-move[1])

print(king)
print(stone)
💡 우선 각 이동을 딕셔너리로 만들었다.
그 다음, 킹이 판 밖으로 나가지 않는 경우에 한해서 킹을 움직여주었다.
이 때 킹의 위치에 스톤이 위치한다면, 스톤을 옮겼을 경우 판 밖으로 나가는지를 봤다.
나가지 않는다면 스톤도 동일하게 이동시키고, 아니라면 킹을 원위치 시켰다.
저작자표시 비영리 변경금지 (새창열림)
  1. 📝 문제
  2. ✅ 풀이
'코딩 테스트 준비/5정한' 카테고리의 다른 글
  • [BOJ 16165번] 걸그룹 마스터 준석이(Python)
  • [BOJ 1012번] 유기농 배추(Python)
  • [BOJ 1021번] 회전하는 큐(Python)
  • [BOJ 2992번] 크면서 작은 수(Python)
zzzini
zzzini
종착지는 어디인지 모르지만
zzzini
나의 표류일지
zzzini
전체
오늘
어제
  • 분류 전체보기 (308)
    • ASAC 빅데이터 분석가 4기 (44)
      • Python기초 (6)
      • SQL (3)
      • Matplotlib & Seaborn (2)
      • Data Handling (6)
      • Web Crawling (3)
      • Machine Learning (9)
      • Deep Learning (10)
      • 데이터 분석 (1)
      • 기타 (2)
      • 수학 (2)
    • 코딩 테스트 준비 (168)
      • 5정한 (132)
      • 카카오 (14)
      • PCCP & PCCE (3)
      • 프로그래머스 (19)
    • 자격증 (35)
      • AWS CLF-C02 (18)
      • AWS SAA-C03 (1)
      • Tableau Desktop Specialist (5)
      • Tableau Certified Data Anal.. (11)
    • 독서 (17)
    • Tech (24)
      • Tableau (11)
      • AI (4)
      • Flask (1)
      • Node.js (2)
      • Cloud Computing (2)
      • Git & GitHub (1)
      • Notion API (1)
      • Linux (2)
    • Projects (2)
    • 알고리즘 공부 (6)
    • 🎵 (11)

블로그 메뉴

  • 글 쓰기
  • 홈
  • 방명록

공지사항

hELLO · Designed By 정상우.v4.2.1
zzzini
[BOJ 1063번] 킹(Python)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.