문제 지문 #5
A 게임은 4x4 격자 모양의 보드의 가장 왼쪽 위에서 가장 오른쪽 아래로 말을 이동시키면서 각 구역에 있는 코인을 획득하는 게임입니다. 이때, 말은 오른쪽 또는 아래쪽으로만 이동할 수 있습니다.
예를 들어, 보드가 아래와 같다면
아래의 경우가 코인을 최대로 획득할 수 있는 경우이고 이때 획득하는 코인은 38입니다.
각 구역에서 획득할 수 있는 코인 양을 담은 2차원 배열 board가 매개변수로 주어질 때, 최대로 획득할 수 있는 코인의 양을 return 하도록 solution 메서드를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 _한 줄_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.
#####매개변수 설명
각 구역에서 획득할 수 있는 코인 양을 담은 2차원 배열 board가 solution 메서드의 매개변수로 주어집니다.
- board는 4x4 크기인 2차원 배열입니다.
- 각 구역에서 획득할 수 있는 코인의 양은 1 이상 9 이하인 자연수입니다.
#####return 값 설명
최대로 획득할 수 있는 코인의 양을 return 합니다.
#####예제
board | return |
---|---|
[[6, 7, 1, 2], [3, 5, 3, 9], [6, 4, 5, 2], [7, 3, 2, 6]] | 38 |
#####예제 설명
문제에 나온 예와 같습니다.
혼자 풀이
한 줄 고치기 문제입니다. 격자의 끝에서 끝까지 이동하면서 최대 코인의 개수를 구하는 문제입니다.
주어진 지문의 코드는 첫 행으로만 이동하는 경우, 첫 열로만 이동하는 경우, 그 외의 경우를 나누어서 계산했습니다.
위 문제와 같이 코인이 주어졌다고 했을 때, 아래와 같이 3가지 경우로 나누어 코인의 합계를 계산했습니다.
class Main {
public int solution(int[][] board) {
int answer = 0;
int[][] coins = new int[4][4];
for(int i = 0; i < 4; i++) {
for(int j = 0; j < 4; j++) {
if(i == 0 && j == 0){
coins[i][j] = board[i][j];
}else if(i == 0 && j != 0){ //첫행의 누적 코인 계산
coins[i][j] = board[i][j] + coins[i][j-1];
}else if(i != 0 && j == 0){ //첫열의 누적 코인 계산
coins[i][j] = board[i][j] + coins[i-1][j];
}else{ //그외 모든 칸은 해당 칸의 왼쪽과 위쪽 코인 중 더 큰 쪽과 현재 칸의 코인 개수의 합
//coins[i][j] = board[i][j] + Math.max(coins[i][j], coins[i-1][j-1]);
coins[i][j] = board[i][j] + Math.max(coins[i-1][j], coins[i][j-1]);
}
}
}
//누적된 최종 코인의 갯수를 반환
answer = coins[3][3];
return answer;
}
// 아래는 테스트케이스 출력을 해보기 위한 main 메소드입니다. 아래에는 잘못된 부분이 없으니 위의 코드만 수정하세요.
public static void main(String[] args) {
Main sol = new Main();
int[][] board = {{6, 7, 1, 2}, {3, 5, 3, 9}, {6, 4, 5, 2}, {7, 3, 2, 6}};
int ret = sol.solution(board);
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
System.out.println("solution 메소드의 반환 값은 " + ret + " 입니다.");
}
}
정답
혼자 풀이와 정답이 동일합니다.
실습은 아래 참고
2022.10.25 - [Programming/Cos Pro 1급] - Cos Pro 1급 공부 사이트 추천 - 구름 에듀(https://edu.goorm.io/)
Cos Pro 1급 공부 사이트 추천 - 구름에듀(https://edu.goorm.io/)
구름 EDU??? YBM 공식 사이트에서 받은 문제 지문/문제 코드/정답 코드를 intellij에서 공부하다가 후배 추천으로 구름 에듀를 알게 되었습니다. 문제 지문 따로 문제 코드 따로 열어보는 게 여간 불
woogong80.tistory.com
'Programming > Cos Pro 1급' 카테고리의 다른 글
Cos Pro 1급 - 샘플 문제 6차 7번 - Up and Down 게임하기 (2) | 2022.11.18 |
---|---|
Cos Pro 1급 - 샘플 문제 6차 6번 - 만났을 때 최대가 되게 종이접기 (0) | 2022.11.18 |
Cos Pro 1급 - 샘플 문제 6차 4번 - 카드 섞기 (0) | 2022.11.17 |
Cos Pro 1급 - 샘플 문제 6차 3번 - 큰 수와 작은 수의 차이 구하기 (2) | 2022.11.17 |
Cos Pro 1급 - 샘플 문제 6차 2번 - 단어를 적는 데 필요한 줄 수 (3) | 2022.11.17 |
댓글