https://www.acmicpc.net/problem/1783
코드설명
구현(Implementation) + 그리드(Greedy, 탐욕법) + 많은 조건 분기(If Else) 문제입니다.
코드 구현하며, 75퍼센트 정도에서 계속해서 오류가 나왔었습니다.
관련 입력 예시는
3 7
출력 예시
5
로 알 수 있었습니다.
그림을 그렸을떄,
- 2칸 위로, 1칸 오른쪽
- 1칸 위로, 2칸 오른쪽
- 1칸 아래로, 2칸 오른쪽
- 2칸 아래로, 1칸 오른쪽
3x7 개의 행렬에서 처음에 해당 행렬에서 최대의 칸을 방문하기 위해 총 4개를 생각했었습니다
.하지만, 잘 생각해보면 1번 방법 -> 4번 방법 -> 2번 방법 -> 3번 방법으로 총 4번 이동(첫칸은 포함하니 최대 5개)가 나옵니다.
코드
package Main;
import java.util.*;
import java.io.*;
public class Main {
public static int N, M;
public static int[] arr;
public static int answer = 0;
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
//만약 N == 1이라면,
if(N == 1) {
System.out.println(1);
return ;
}
//만약 N이 3보다 작다면,
else if(N == 2) {
if(M <= 8) {
if(M%2 == 0) {
System.out.println(M/2);
}else {
System.out.println(M/2 + 1);
}
}
else if(8 < M) {
System.out.println(4);
}
return ;
}
else if(N >= 3) {
//만약 M이 5이하라면, 최대 4개가 가능하므로 모든 방향으로 갈 필요가 없다.
if(M <= 4) {
System.out.println(M);
return ;
}
else if(5 <= M && M <= 6) {
System.out.println(4);
}
//M이 4 초과라면, 4가지 방향 모두 이동하는데, 이떄 중요한점은, 2칸 오른쪽으로 두번 이동한다는 것 이다. 즉, M개에서 2개를 뺴야한다.
else if(7 <= M) {
System.out.println(M - 2);
}
}
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 2012 등수 매기기 - 그리디(Greedy, 탐욕법) + 정렬(Sort) JAVA (0) | 2024.07.21 |
---|---|
[백준] 1788 피보나치 수의 확장 - 동적프로그래밍(DP, Dynamic Programming) + 수학(Math) JAVA (0) | 2024.07.20 |
[백준] 1449 수리공 항승 - 구현(Implementation) + 그리디(Greedy, 탐욕법) + 완전탐색(BruteForce) JAVA (0) | 2024.07.19 |
[백준] 1448 삼각형 만들기 - 구현(Implementation) + Greedy(탐욕법, 그리디) JAVA (0) | 2024.07.19 |
[백준] 11051 이항 계수 2 - 재귀함수(Recursive Function) JAVA (0) | 2024.07.02 |