프로그래머스 코딩테스트 연습 입문문제 '주사위의 개수' 문제입니다.
https://school.programmers.co.kr/learn/courses/30/lessons/120845
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
❓문제 설명
머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 box와 주사위 모서리의 길이 정수 n이 매개변수로 주어졌을 때, 상자에 들어갈 수 있는 주사위의 최대 개수를 return 하도록 solution 함수를 완성해주세요.
아래 입출력 예시표를 참고해주세요!
⚠️ 제한사항 및 입출력 예시표
- box의 길이는 3입니다.
- box[0] = 상자의 가로 길이
- box[1] = 상자의 세로 길이
- box[2] = 상자의 높이 길이
- 1 ≤ box의 원소 ≤ 100
- 1 ≤ n ≤ 50
- n ≤ box의 원소
- 주사위는 상자와 평행하게 넣습니다.
box (입력) | n (입력) | result |
[1, 1, 1] | 1 | 1 |
[10, 8, 6] | 3 | 12 |
✏️ 직접 구현한 코드
class Solution {
public int solution(int[] box, int n) {
int res[] = new int[3];
int sum = n;
for(int i = 0; i < box.length; i++ ){
while((box[i]-sum)>=0) {
res[i] += 1;
sum += n;
}
sum = n;
}
return res[0] * res[1] * res[2];
}
}
🗣️ 코드 설명
- 주사위가 가로, 세로, 높이에 몇 개가 들어갈 수 있는지, 주사위의 개수를 담을 res배열을 생성합니다.
- for문과 while문을 활용해 값을 찾았습니다. 첫번째 for문은 i가 0부터 2까지 증가하며 반복하도록했고 while문은 box의 길이에서 주사위 길이를 뺐을 때 0보다 크거나 같으면 반복하도록 했습니다. 이 for문과 while문은 이중으로 되어있습니다. while문을 빠져나오면 sum은 n으로 다시 초기화되고 i는 +1됩니다.
- 마지막으로 박스의 가로, 세로, 높이 각각에 들어갈 수 있는 주사위의 개수를 구한 res배열의 모든 값을 곱해 리턴합니다.
'코딩테스트 회고록 > 코테_Java' 카테고리의 다른 글
[JAVA] 프로그래머스 - 합성수 찾기 (0) | 2023.02.27 |
---|---|
[JAVA] 프로그래머스 - 직각삼각형 출력하기 (0) | 2023.02.24 |
[JAVA] 프로그래머스 - 배열 원소의 길이 (0) | 2023.02.20 |
[JAVA] 학교 수행평가 코딩테스트 - 부채꼴 면적과 둘레를 클래스 이용해 구하기 (0) | 2023.02.16 |
[JAVA] 학교 수행평가 코딩테스트 - 두 배열 병합과 오름차순 정렬 후 중복없이 출력하기 (0) | 2023.02.16 |