Leetcode Java Find Missing Observations
업데이트:
문제
코드
class Solution {
public int[] missingRolls(int[] rolls, int mean, int n) {
int sum = 0;
for (int roll : rolls) {
sum += roll;
}
int less = (mean * (n + rolls.length)) - sum;
if (less < n || (6 * n) < less) {
return new int[0];
} else {
int quotient = less / n;
int remainder = less % n;
int[] result = new int[n];
Arrays.fill(result, quotient);
for (int i = 0; i < remainder; i++) {
result[i] = quotient + 1;
}
for (int i = remainder; i < n; i++) {
result[i] = quotient;
}
return result;
}
}
}
결과
설명
- 정육면체 주사위를 이용하여 이미 굴린 주사위의 값인 rolls을 중앙값인 mean을 만들기 위해서 주사위를 n번 굴린 결과의 조합을 찾는 문제이다.
- 단, 불가능하면 빈 배열을 주어진 문제의 결과로 반환한다.
-
less는 mean을 만들기 위해 부족한 값을 저장할 변수로, maen을 $n + rolls.length$인 중앙값이 되기 위한 값에 rolls의 값을 더한 부족한 값을 넣어준다.
-
less가 n보다 작거나 $6 \times n$인 추가로 굴린 값이 모두 6이어도 중앙값을 초과하는 경우, 빈 배열을 주어진 문제의 결과로 반환한다.
- 3번의 경우가 아니라면 아래를 수행한다.
- 결과를 구하기 위한 변수를 정의한다.
- quotient와 remainder는 부족한 less 값을 n으로 나눈 몫과 나머지를 저장한 변수이다.
- result는 추가로 굴려서 나와야 하는 값을 저장할 변수로, n 크기의 정수 배열로 초기화하고 quotient를 모든 위치에 넣어준다.
- 0부터 remainder 미만까지 i를 증가시키며, result[i]에 $quotient + 1$의 값을 순차적으로 더해 부족한 값들을 채워준다.
- 나머지 위치에 quotient를 넣어주고 result를 주어진 문제의 결과로 반환한다.
- 결과를 구하기 위한 변수를 정의한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기