본문 바로가기
TIL

[코테연습] 1894. Find the Student that Will Replace the Chalk

by 크라00 2024. 9. 2.

- 배열 / 이진 검색 / 시뮬레이션 / 접두사 합 문제

 

https://leetcode.com/problems/find-the-student-that-will-replace-the-chalk/description/?envType=daily-question&envId=2024-09-02

 

- 문제분석

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;
    }
}