[BAEKJOON] 1063번 : 킹(JAVA)

2025. 5. 2. 11:19· Algorithm
반응형

- 알고리즘 분류 : 구현

- 사용 언어 : JAVA

- 문제 요점

  1. 킹과 돌의 좌표를 알파벳과 숫자를 숫자 좌표로 변환해 저장
  2. 명령 개수만큼 입력된 이동 명령을 하나씩 처리하며 move() 함수를 호출
  3. 이동 명령에 따라 킹의 다음 위치를 계산하고, 보드 밖이면 무시
  4. 킹이 돌과 겹치는 위치로 이동하려 할 경우, 돌도 같은 방향으로 밀 수 있는지 확인
  5. 이동이 유효할 경우 킹과 돌의 위치를 갱신하고, 마지막에 알파벳+숫자 형식으로 출력
import java.util.Scanner;

public class Main {
    static int kingX, kingY;
    static int stoneX, stoneY;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] input = sc.nextLine().split(" ");
        String kingPos = input[0];
        String stonePos = input[1];
        int n = Integer.parseInt(input[2]);

        kingX = kingPos.charAt(0) - 'A' + 1;
        kingY = kingPos.charAt(1) - '0';
        stoneX = stonePos.charAt(0) - 'A' + 1;
        stoneY = stonePos.charAt(1) - '0';

        for (int i = 0; i < n; i++) {
            String cmd = sc.nextLine();
            move(cmd);
        }

        System.out.println((char) (kingX + 'A' - 1) + "" + kingY);
        System.out.println((char) (stoneX + 'A' - 1) + "" + stoneY);
    }

    public static void move(String dir) {
        int dx = 0, dy = 0;

        switch (dir) {
            case "R": dx = 1; break;
            case "L": dx = -1; break;
            case "B": dy = -1; break;
            case "T": dy = 1; break;
            case "RT": dx = 1; dy = 1; break;
            case "LT": dx = -1; dy = 1; break;
            case "RB": dx = 1; dy = -1; break;
            case "LB": dx = -1; dy = -1; break;
        }

        int tempKingX = kingX + dx;
        int tempKingY = kingY + dy;
        if (tempKingX < 1 || tempKingY < 1 || tempKingX > 8 || tempKingY > 8) {
            return;
        }

        if (tempKingX == stoneX && tempKingY == stoneY) {
            int tempStoneX = stoneX + dx;
            int tempStoneY = stoneY + dy;

            if (tempStoneX < 1 || tempStoneY < 1 || tempStoneX > 8 || tempStoneY > 8) {
                return;
            }
            stoneX = tempStoneX;
            stoneY = tempStoneY;
        }
        kingX = tempKingX;
        kingY = tempKingY;
    }
}

 

 

 

반응형

'Algorithm' 카테고리의 다른 글

[BAEKJOON] 13032번 : ABCDE(JAVA)  (1) 2025.05.06
[BAEKJOON] 14940번 : 쉬운 최단거리 (JAVA)  (1) 2025.05.05
[Programmers] 선물 주고받기 계산 (Java)  (0) 2025.04.27
[BAEKJOON] 7569번 : 토마토 (JAVA)  (1) 2024.02.18
[BAEKJOON] 2580번 : 스도쿠 (JAVA)  (0) 2024.01.14
'Algorithm' 카테고리의 다른 글
  • [BAEKJOON] 13032번 : ABCDE(JAVA)
  • [BAEKJOON] 14940번 : 쉬운 최단거리 (JAVA)
  • [Programmers] 선물 주고받기 계산 (Java)
  • [BAEKJOON] 7569번 : 토마토 (JAVA)
멍목
멍목
개발 관련 새롭게 알게 된 지식이나 좋은 정보들을 메모하는 공간입니다.
반응형
멍목
김멍목의 개발블로그
멍목
전체
오늘
어제
  • 분류 전체보기 (514)
    • BE (190)
      • Spring (21)
      • Java (141)
      • Kotlin (6)
      • JPA (22)
    • FE (33)
      • Javascript (16)
      • Typescript (0)
      • React (5)
      • Vue.js (9)
      • JSP & JSTL (3)
    • DB (32)
      • Oracle (22)
      • MongoDB (10)
    • Algorithm (195)
    • Linux (8)
    • Git (6)
    • etc (42)
    • ---------------------------.. (0)
    • 회계 (4)
      • 전산회계 2급 (4)
    • 잡동사니 (2)

블로그 메뉴

  • 홈
  • 관리

공지사항

인기 글

태그

  • JPA 공부
  • 코틀린
  • 이펙티브 자바
  • junit5
  • vue3 공부
  • 코테공부
  • 자기 개발
  • 더 자바 애플리케이션을 테스트하는 다양한 방법
  • 자기공부
  • 자기개발
  • Effective Java
  • Java to Kotlin
  • Oracle
  • 이펙티브자바
  • 더 자바 Java 8
  • 자기 공부
  • 알고리즘공부
  • 전산회계 2급 준비
  • 프로젝트로 배우는 Vue.js 3
  • 자바 개발자를 위한 코틀린 입문
  • java 8
  • 자바 테스팅 프레임워크
  • 코테 공부
  • MongoDB 기초부터 실무까지
  • 자바 공부
  • 자바공부
  • MongoDB 공부
  • 알고리즘 공부
  • MongoDB with Node.js
  • JPA

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
멍목
[BAEKJOON] 1063번 : 킹(JAVA)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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