https://www.acmicpc.net/problem/1063

 


간단한 구현 문제로구나! 하고 하나하나 구현을 시작했다.

효율적인 자료구조를 썼으면 좋았겠지만 그냥 ㅎㅎ 쓰고 싶었다네요...

 

하나하나 구현 후 채점을 돌렸는데 어디선가 이상하게 돌아가는 것을 알게 되었다. 이유는 다음 코드였다.

case "R": {
			ar++;
			if(ar>7) {
				ar--;continue;
			}
			if(ar==cr&&ac==cc)
				cr++;
			if(cr>7) {
				ar--;cr--;continue;
			}
			break;
		}

 

R, L, B, T 처럼 대각선 이동이 아닌 경우 돌과 킹의 위치를 비교하는 코드를 잘못 작성하였다.

단순히 이동한 좌표만 비교해야지!라고 생각했지만 행과 열 하나만 같으면 돌이 이동되는 문제가 있었다.

정확히 같은지 비교하는 것이 포인트인데 이걸 놓쳤다니 아쉬웠다.

 

Ğ̎ĭ̎t̆̎H̆̎ŭ̎b̆̎ : 

https://github.com/YunYunYY/Algorithm/tree/main/%EB%B0%B1%EC%A4%80/Silver/1063.%E2%80%85%ED%82%B9

 

Algorithm/백준/Silver/1063. 킹 at main · YunYunYY/Algorithm

Contribute to YunYunYY/Algorithm development by creating an account on GitHub.

github.com

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException{
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer stt = new StringTokenizer(bf.readLine());
		String a = stt.nextToken();
		String b = stt.nextToken();
		int c = Integer.parseInt(stt.nextToken());
		int ar=a.charAt(0)-'A';
		int ac=a.charAt(1)-'0'-1;
		int cr=b.charAt(0)-'A';
		int cc=b.charAt(1)-'0'-1;
		
		for(int i=0;i<c;i++) {
			String d = bf.readLine();
			switch (d) {
			case "R": {
				ar++;
				if(ar>7) {
					ar--;continue;
				}
				if(ar==cr&&ac==cc)
					cr++;
				if(cr>7) {
					ar--;cr--;continue;
				}
				break;
			}
			
			case "L": {
				ar--;
				if(ar<0) {
					ar++;continue;
				}
				if(ar==cr&&ac==cc)
					cr--;
				if(cr<0) {
					ar++;cr++;continue;
				}
				break;
			}
			case "B": {
				ac--;
				if(ac<0) {
					ac++;continue;
				}
				if(ar==cr&&ac==cc)
					cc--;
				if(cc<0) {
					ac++;cc++;continue;
				}
				break;
			}
			case "T": {
				ac++;
				if(ac>7) {
					ac--;continue;
				}
				if(ar==cr&&ac==cc)
					cc++;
				if(cc>7) {
					ac--;cc--;continue;
				}
				break;
			}
			case "RT":{
				ar++;ac++;
				if(ar>7||ac>7) {
					ar--;ac--;continue;
				}
				if(ar==cr&&ac==cc) {
					cr++;cc++;
				}
				if(cr>7||cc>7) {
					ar--;ac--;cr--;cc--;continue;
				}
				break;
			}
			case "LT":{
				ar--;ac++;
				if(ar<0||ac>7) {
					ar++;ac--;continue;
				}
				if(ar==cr&&ac==cc) {
					cr--;cc++;
				}
				if(cr<0||cc>7) {
					ar++;ac--;cr++;cc--;continue;
				}
				break;
			}case "RB":{
				ar++;ac--;
				if(ar>7||ac<0) {
					ar--;ac++;continue;
				}
				if(ar==cr&&ac==cc) {
					cr++;cc--;
				}
				if(cr>7||cc<0) {
					ar--;ac++;cr--;cc++;continue;
				}
				break;
			}
			case "LB":{
				ar--;ac--;
				if(ar<0||ac<0) {
					ar++;ac++;continue;
				}
				if(ar==cr&&ac==cc) {
					cr--;cc--;
				}
				if(cr<0||cc<0) {
					ar++;ac++;cr++;cc++;continue;
				}
				break;
			}
			}
		}
		System.out.println((char)(ar+'A')+""+(ac+1));
		System.out.println((char)(cr+'A')+""+(cc+1));
	}
	
}

'BOJ > Java' 카테고리의 다른 글

백준 Java : #17998 Levenshtein Distance  (2) 2025.05.24
백준 Java : #2178  (0) 2022.06.27
백준 Java : #1002  (0) 2022.05.11
백준 Java : #1064  (0) 2022.04.20
Java : Lambda / stream+pipelining / Singleton  (0) 2022.04.01

+ Recent posts