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 |