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 |