백준 1783. 병든 나이트
https://www.acmicpc.net/problem/1783
1783번: 병든 나이트
첫째 줄에 체스판의 세로 길이 N와 가로 길이 M이 주어진다. N과 M은 2,000,000,000보다 작거나 같은 자연수이다.
www.acmicpc.net
너무 오랜만에 문제를 풀려고 하니 생각한대로 코드 작성하는 게 쉽지가 않았다.. 꾸준히 풀었어야했는데.. BFS로 접근을 생각했는데 블로그를 참고하니 입력값이 너무 커서 BFS로 접근하면 시간초과가 난다고 한다. 문제를 꾸준히 풀자!
전체 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int result = 0;
if(N == 1) {
// N이 1이면 이동 불가 (시작지점만)
result = 1;
}else if(N == 2) {
// N이 2일 떈, 2번,3번 방향으로만 움직일 수 있음
// 절대 4방향 다 움직일 수 없어서 최댓값은 4
result = Math.min((M+1)/2, 4);
}
else if(N>=3){
// M=7 부터 4방향 다 이동 가능
// 4방향 다 이동한 후에는 y값이 1씩 증가하는 1번,4번 이동을 반복
// 즉, M-2개의 칸을 갈 수 있음
if(M < 7) {
result = Math.min(M, 4);
}else {
result = M-2;
}
}
System.out.println(result);
}
}