문제
문제해결
import java.util.Scanner;
/*
1번: 2칸 위로, 1칸 오른쪽
2번: 1칸 위로, 2칸 오른쪽
3번: 1칸 아래로, 2칸 오른쪽
4번: 2칸 아래로, 1칸 오른쪽
*/
public class S4_1783 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int cnt = 0;
if (n==1){//세로칸이 1일경우 이동 불가
cnt = 1;
} else if (n==2){//세로칸이 2일경우 2,3번 방향으로만 이동 가능, 1~4번 전부 이동 불가능
cnt = Math.min((m+1)/2, 4);
} else{//세로칸이 3칸 이상일 경우
if (m<7){
cnt = Math.min(m, 4);
} else {
cnt = m - 2;
}
}
System.out.println(cnt);
}
}
- 배열과 재귀함수를 사용해서 문제를 풀려 했으나 도저히 풀리지가 않아 구글링을 하였다...
https://songwonseok.github.io/algorithm/BOJ-1783/
- 이분처럼 직접 그림을 그려보니 이해가 되었다
- 문제가 주어진 조건은 나이트는 무조건 오른쪽으로만 이동이 가능하다
- 그렇다면 최대한 많은 곳을 여행하기 위해서는 오른쪽으로는 무조건 1칸씩만 가는 것이 이득이다
- 하지만 4칸 이상 이동할 경우 모든 방법을 다 사용해야 하기에 가로(m) 길이에서 -2를 해줘야 한다
- 4칸이상 이동할수 없는 경우 m만큼만 이동하거나 4만큼만 이동이 가능하다
'[알고리즘] > 백준' 카테고리의 다른 글
백준 10828 자바 - 스택 (0) | 2021.06.12 |
---|---|
자바 - 구현 - 백준 9093 단어 뒤집기 (0) | 2021.06.12 |
자바 - 구현 - 백준 6986 절사평균 (0) | 2021.05.24 |
자바 - 구현 - 백준 2581 소수 (0) | 2021.05.22 |
자바 - 구현 - 백준 1292 쉽게 푸는 문제 (0) | 2021.05.18 |