Post

[Programmers] #120845 - 주사위의 개수 [Java][C++][Python]

직육면체 상자에 정육면체 주사위를 최대 몇 개까지 채울 수 있는지 구하는 워밍업 문제.

[Programmers] #120845 - 주사위의 개수 [Java][C++][Python]

문제 링크


1. 아이디어

주사위를 상자와 평행하게만 넣으므로 세 축을 서로 독립적으로 볼 수 있다. 한 축의 길이를 주사위 모서리 길이 n으로 나눈 몫이 그 축 방향으로 놓을 수 있는 주사위 개수이고, 나눗셈의 나머지에 해당하는 공간은 주사위가 더 들어가지 못하므로 버린다. 세 축의 배치가 서로 영향을 주지 않으니 축별 개수를 모두 곱하면 상자에 채울 수 있는 최대 개수가 된다.


2. 복잡도

접근시간공간
풀이$O(1)$$O(1)$

3. 코드

풀이 [Java][C++][Python]

1
2
3
4
5
class Solution {
    public int solution(int[] box, int n) {
        return (box[0] / n) * (box[1] / n) * (box[2] / n);
    }
}
1
2
3
4
5
6
#include <bits/stdc++.h>
using namespace std;

int solution(vector<int> box, int n) {
    return (box[0] / n) * (box[1] / n) * (box[2] / n);
}
1
2
def solution(box, n):
    return (box[0] // n) * (box[1] // n) * (box[2] // n)

This post is licensed under CC BY 4.0 by the author.