본문 바로가기
Programming/Cos Pro 1급

Cos Pro 1급 - 샘플 문제5차 2번 (물을 최대로 담기 - 중첩 for문)

by 우공80 2022. 11. 8.
728x90

물을 최대한 담을 수 있는 기둥 찾기

문제 지문 #2


아래와 같이 벽이 여러 개 있을 때, 벽 2개를 제외한 나머지 벽을 제거하여 물을 최대한 담으려 합니다. 물은 두 벽 사이의 거리 x 두 벽 중 낮은 벽의 높이 리터만큼 담을 수 있으며, 두 벽의 거리는 두 벽의 위치 차이입니다.

스크린샷 2018-10-15 오전 9.33.21.png

모든 벽의 위치와 높이를 담은 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리터를 담을 수 있습니다.

스크린샷 2018-10-15 오전 9.33.16.png

728x90

 

혼자 풀이


한 줄 고치기 문제입니다. 한 줄 고치기 문제는 대부분 조건문이 있는 곳에 틀린 부분이 있습니다.

알고리즘은 각 기둥 중 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

728x90

댓글