TIL
[코테연습] 1894. Find the Student that Will Replace the Chalk
크라00
2024. 9. 2. 16:20
- 배열 / 이진 검색 / 시뮬레이션 / 접두사 합 문제
- 문제분석
1. int[] array 함수에 숫자가 들어있다.
2. int k 에는 1 부터 ... 10^9 까지의 숫자가 들어있다.
3. array[i] 만큼 k를 계속 빼고, 마지막 length 일때에 첫번째로 돌아간다. 이때 k 가 0보다 작을 때 몇번째 i 일지를 구하라.
- 문제풀이
1. int[] array의 값을 모두 더한다.
2. sum <= k 일 것이므로, 몇번 반복한 후 k 는 k % sum 과 같다.
3. int remain = k % sum 으로 정의할때, for 문으로 array 를 반복하면서 remain - array[i] 를 해준다.
4. remain 이 0 이하 일때, i 를 반환한다.
class Solution {
public int chalkReplacer(int[] chalk, int k) {
long total = 0;
for(int num : chalk) {
total+=num;
}
int remain = (int)(k % total);
for (int i = 0; i < chalk.length; i++) {
if (remain < chalk[i]) {
return i;
}
remain-=chalk[i];
}
return 0;
}
}