Algorithm/BOJ(Baekjoon Online Judge)
[백준 - 16948번] 데스나이트 - Java //Wello Horld//
koucop
2020. 3. 5. 13:55
이번에는 BOJ의 16948번 문제 "데스나이트" 를 풀어보도록 하자
입력으로 첫째 줄에 체스판의 크기가 주어지고 다음 줄에 r1, c1, r2, c2 가 주어진다.
출력으로 첫째 줄에 데스 나이트가 r1,c1 에서 r2, c2 로 이동하는 최소 이동 횟수를 출력하면 되는 문제이다. 이동할 수 없다면 -1 을 출력하면 된다.
성공한 코드는 아래와 같다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
int r1 = Integer.parseInt(st.nextToken());
int c1 = Integer.parseInt(st.nextToken());
int r2 = Integer.parseInt(st.nextToken());
int c2 = Integer.parseInt(st.nextToken());
int r = Math.abs(r1 - r2);
int c = Math.abs(c1 - c2);
int cnt = 0;
if(r % 2 == 1){
cnt = -1;
} else {
int n = r / 2;
for(int i = 0; i < n; i++){
c = Math.abs(c - 1);
}
cnt += n;
if(c % 2 == 1){
cnt = -1;
} else {
n = c / 2;
cnt += n;
}
}
bw.write(cnt + "\n");
bw.flush();
br.close();
bw.close();
}
}
문제 : https://www.acmicpc.net/problem/16948
16948번: 데스 나이트
게임을 좋아하는 큐브러버는 체스에서 사용할 새로운 말 "데스 나이트"를 만들었다. 데스 나이트가 있는 곳이 (r, c)라면, (r-2, c-1), (r-2, c+1), (r, c-2), (r, c+2), (r+2, c-1), (r+2, c+1)로 이동할 수 있다. 크기가 N×N인 체스판과 두 칸 (r1, c1), (r2, c2)가 주어진다. 데스 나이트가 (r1, c1)에서 (r2, c2)로 이동하는 최소 이동 횟수를 구해보자. 체스판의 행과 열은 0번부
www.acmicpc.net
혹시 코드에 이상한 부분이나 틀린 부분이 있던지, 이해가 안가는 부분이 있다면 댓글로 알려주세요