문제 지문 #2
아래와 같이 벽이 여러 개 있을 때, 벽 2개를 제외한 나머지 벽을 제거하여 물을 최대한 담으려 합니다. 물은 두 벽 사이의 거리 x 두 벽 중 낮은 벽의 높이 리터만큼
담을 수 있으며, 두 벽의 거리는 두 벽의 위치 차이입니다.
모든 벽의 위치와 높이를 담은 2차원 배열 walls가 매개변수로 주어질 때, 물을 최대 몇 리터나 담을 수 있는지 return 하도록 solution 메서드를 작성했습니다. 그러나, 일부 코드가 잘못되어 코드가 바르게 동작하지 않습니다. 주어진 코드가 모든 입력을 바르게 처리하도록 코드를 수정해주세요. 코드는 _한 줄_만 수정해야 합니다.
매개변수 설명
모든 벽의 위치와 높이를 담은 2차원 배열 walls가 solution 메서드의 매개변수로 주어집니다.
- walls는 길이가 3이상 100 이하인 2차원 배열입니다.
- walls의 각 원소는 [벽의 위치, 벽의 높이]이고, 벽의 위치를 기준으로 오름차순으로 정렬되어 있습니다.
- 벽의 위치는 1 이상 100 이하입니다.
- 벽의 높이는 1 이상 100 이하입니다.
return 값 설명
물을 최대 몇 리터나 담을 수 있는지 return 합니다.
입출력 예
walls | return |
---|---|
[[1, 4], [2, 6], [3, 5], [5, 3], [6, 2]] | 12 |
입출력 예 설명
아래와 같이 벽을 남겼을 때 물을 최대로 담을 수 있습니다. 이때 최대 12리터를 담을 수 있습니다.
혼자 풀이
한 줄 고치기 문제입니다. 한 줄 고치기 문제는 대부분 조건문이 있는 곳에 틀린 부분이 있습니다.
알고리즘은 각 기둥 중 2개씩 골라서 사각형 면적이 가장 큰 경우를 찾는 것입니다.
담을 수 있는 물의 용량은 다음과 같습니다.
두 개의 기둥 사이의 거리 X 두 개의 기둥 중 짧은 기둥의 길이
한 줄 고치기가 아니라 전체 작성하는 문제가 이런 쉬운 문제가 나오면 바로 합격할 수 있을 텐데요.^^
class Main {
public int solution(int[][] walls) {
int answer = 0;
for(int i = 0; i < walls.length; i++) {
for(int j = i+1; j < walls.length; j++) {
int area = 0;
// if(walls[i][1] > walls[j][1]) //문제
if(walls[i][1] < walls[j][1]) //수정한 부분
area = walls[i][1] * (walls[j][0] - walls[i][0]);
else
area = walls[j][1] * (walls[j][0] - walls[i][0]);
if(answer < area)
answer = area;
}
}
return answer;
}
// 아래는 테스트케이스 출력을 해보기 위한 main 메소드입니다. 아래에는 잘못된 부분이 없으니, 위의 코드만 수정하세요.
public static void main(String[] args) {
Main sol = new Main();
int[][] walls = {{1, 4}, {2, 6}, {3, 5}, {5, 3}, {6, 2}};
int ret = sol.solution(walls);
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
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급 - 샘플 문제 풀이 5차 3번 - 배열을 정렬하기 (2) | 2022.11.10 |
---|---|
Cos Pro 1급 Java 시험 후기 (4) | 2022.11.09 |
Cos Pro 1급 - 샘플 문제 5차 1번 (계단 오르는 경우의 수-동적계획법) (6) | 2022.11.08 |
Cos Pro 1급 - 샘플 문제 풀이 4차 10번 (소수의 제곱수의 개수 구하기) (2) | 2022.11.07 |
Cos Pro 1급 - 샘플 문제 풀이 4차 9번 (시침과 분침의 각도-Math함수) (2) | 2022.11.06 |
댓글