코린이의 소소한 공부노트

[LeetCode/Easy] 2073. Time Needed to Buy Tickets 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 2073. Time Needed to Buy Tickets

무지맘 2023. 4. 26. 19:52

1. Input

1) int[] tickets

- 0-indexed

- tickets[i] == i번째 사람이 사려는 티켓의 장수

2) int k

 

2. Output

1) k번째 사람이 티켓을 사는 데 걸리는 시간을 반환

- 0번째가 맨 앞이고, 티켓은 맨 앞에서만 살 수 있다.

- 티켓은 한 번에 1장씩 살 수 있고, 1장을 산 사람은 티켓을 더 사기 위해서는 맨 뒤에 가서 다시 줄을 서야 한다.

- 티켓 1장을 살 때 1초가 걸린다.

- 티켓을 다 샀다면 줄을 빠져 나온다.

 

3. Constraint

1) n == tickets.length

2) 1 <= n <= 100

3) 1 <= tickets[i] <= 100

4) 0 <= k < n

 

4. Example

Input: tickets = [2,3,2], k = 2 -> Output: 6

설명:

- 1: [1,3,2]

- 2: [1,2,2]

- 3: [1,2,1]

- 4: [0,2,1]

- 5: [0,1,1]

- 6: [0,1,0] // 2번째 사람 구매 완료

 

5. Code

1) 첫 코드(2023/04/26)

class Solution {
    public int timeRequiredToBuy(int[] tickets, int k) {
        int time = 0;
        boolean end = false;
        while(!end){
            for(int i=0 ; i<=k ; i++){
                if(tickets[i]!=0){
                    tickets[i]--; time++;
                }
            }
            if(tickets[k]==0)
                end = true;
            else
                for(int i=k+1 ; i<tickets.length ; i++){
                    if(tickets[i]!=0){
                        tickets[i]--; time++;
                    }
            }
        }
        return time;
    }
}