[프로그래머스_입문] 주사위의 개수

LU·2024년 10월 1일
0
post-thumbnail

문제

머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 box와 주사위 모서리의 길이 정수 n이 매개변수로 주어졌을 때, 상자에 들어갈 수 있는 주사위의 최대 개수를 return 하도록 solution 함수를 완성해주세요.

제한사항

  • box의 길이는 3입니다.
  • box[0] = 상자의 가로 길이
  • box[1] = 상자의 세로 길이
  • box[2] = 상자의 높이 길이
  • 1 ≤ box의 원소 ≤ 100
  • 1 ≤ n ≤ 50
  • n ≤ box의 원소
  • 주사위는 상자와 평행하게 넣습니다.

입출력 예

boxnresult
[1, 1, 1]11
[10, 8, 6]312

입출력 예 설명

입출력 예 #1

  • 상자의 크기가 가로 1, 세로 1, 높이 1이므로 모서리의 길이가 1인 주사위는 1개 들어갈 수 있습니다.

입출력 예 #2

  • 상자의 크기가 가로 10, 세로 8, 높이 6이므로 모서리의 길이가 3인 주사위는 12개 들어갈 수 있습니다.

풀이 1

class Solution {
    public int solution(int[] box, int n) {
        // n은 주사위의 모서리의 길이로 가로, 세로, 높이의 나머지를 구하여 이들을 곱한다.
        
        int a = box[0] / n; // 가로
        int b = box[1] / n; // 세로
        int c = box[2] / n; // 높이
        
        return a * b * c;
    }
}

풀이 2

(풀이1의 간결.ver)

class Solution {
    public int solution(int[] box, int n) {
        // 주사위 길이 : n, 직육면체 상자 길이 : 3(box)
        // (가로 / n) * (세로 / n) * (높이 / n)
        int answer = 0;
        
        answer = (box[0] / n) * (box[1] / n) * (box[2] / n);
        
        return answer;
    }
}

풀이 3

class Solution {
    public int solution(int[] box, int n) {
        // 직육면체 부피 = 가로 * 세로 * 높이
        int answer = 1; // 부피를 구하기 위해서는 초기값이 0이 되어서는 안된다.
        
        // 상자의 가로, 세로, 높이에 대해 반복
        for(int i = 0; i < box.length; i++) {
            // 각 차원에서 가로, 세로, 높이가 몇 개 들어가는지
            answer *= box[i] / n;
        }
        return answer;
    }
}
profile
기록은 나의 무기😎

0개의 댓글