https://school.programmers.co.kr/learn/courses/20848/lessons/255906
νλ‘κ·Έλλ¨Έμ€
SWκ°λ°μλ₯Ό μν νκ°, κ΅μ‘, μ±μ©κΉμ§ Total Solutionμ μ 곡νλ κ°λ°μ μ±μ₯μ μν λ² μ΄μ€μΊ ν
programmers.co.kr
λ¬Έμ  μ€λͺ
μ£Όμμ΄λ μΉ΄νλ₯Ό μ΄μνκ³ μμ΅λλ€. μ£Όμμ΄μ μΉ΄νλ λ§μ§μΌλ‘ μλ¬Έλμ νμ μ€μ΄ λμ΄μ§ μμ΅λλ€. νμ§λ§ μΉ΄νκ° νμνμ¬ μ»€νΌλ₯Ό κΈ°λ€λ¦¬λ μλλ€μ μ’ μ’ λΆλ§μ ν λ‘νκ³ μμ΅λλ€. μ£Όμμ΄λ μΉ΄νλ₯Ό νμ₯νκΈ°λ‘ νκ³ , μΌλ§λ λ§μ μλλ€μ΄ λμμ μΉ΄νμ 머무λμ§ νμΈν΄λ³΄λ € ν©λλ€.
μ£Όμμ΄λ€ μΉ΄νμλ μμ μ μμνμλ§μ 0μ΄μ μλ ν λͺ μ΄ κ°κ²μ λμ°©νκ³ , μ νν kμ΄λ§λ€ μλ‘μ΄ μλ ν λͺ μ΄ μΉ΄νμ μμ μ€μ μλλ€. μλλ€μ ν€μ€μ€ν¬λ₯Ό ν΅ν΄ μ£Όλ¬Ένκ³ , μ£Όμμ΄λ μ£Όλ¬Έλ°μ μμλλ‘ μλ£λ₯Ό λ§λλλ€. μ£Όμμ΄λ μλ£λ₯Ό ν λ²μ νλμ© λ§λ€λ©°, μ§κΈ λ§λ€κ³ μλ μλ£λ₯Ό λ€ λ§λ€λ©΄ λ€μ μλ£λ₯Ό λ§λ€κΈ° μμν©λλ€. μλμ μμ μ΄ μ£Όλ¬Έν μλ£λ₯Ό λ°μλ§μ μΉ΄νλ₯Ό λκ°λλ€. μ£Όμμ΄λ€ μΉ΄νμλ μ¬λ¬ μ’ λ₯μ μλ£λ₯Ό νλ§€νκ³ μλλ° κ° μλ£λ€μ 0λ²λΆν° μ°¨λ‘λλ‘ λ²νΈκ° μ§μ λμ΄ μμ΅λλ€. λν μ£Όμμ΄κ° κ°μ μ’ λ₯μ μλ£λ₯Ό λ§λλλ° κ±Έλ¦¬λ μκ°μ νμ λμΌν©λλ€.
μ£Όμμ΄λ μ€λ μ£Όλ¬Έλ°μ μλ£ λͺ©λ‘μ μ΄μ©νμ¬, μΉ΄νμμ μλλ€μ΄ λμμ μ΅λ λͺ λͺ μ΄ λ¨Έλ¬Όλ λμ§ μκ³ μΆμ΅λλ€. μλλ€μ΄ μΉ΄νμ λμ°©νμ¬ μ£Όλ¬ΈνκΈ°κΉμ§ κ±Έλ¦° μκ°κ³Ό μλ£λ₯Ό λ°μ ν μΉ΄νλ₯Ό λκ°λ μκ°μ μλ£ μ μ‘° μκ°μ λΉν΄ λλ¨ν μ§§κΈ° λλ¬Έμ 무μν©λλ€. ν μλμ΄ μΉ΄νμμ λκ°κ³Ό λμμ λ€λ₯Έ μλμ΄ μΉ΄νμ λ€μ΄μ¬ κ²½μ°, λκ°λ μλμ΄ λ¨Όμ  ν΄μ₯ν λ€μ λ€μ΄μ€λ μλμ΄ μ μ₯ν©λλ€.
μλ₯Ό λ€μ΄, μ£Όμμ΄λ€ μΉ΄νμμ μΈ μ’ λ₯μ μλ£λ₯Ό νλ§€νκ³ μ μ‘° μκ°μ 0λ² μλ£κ° 5μ΄, 1λ² μλ£κ° 12μ΄, 2λ² μλ£λ 30μ΄ μμλλ€κ³ κ°μ ν©λλ€. μμ μ μμν λ€ 4λͺ μ μλμ΄ κ°κ° 0μ΄, 10μ΄, 20μ΄, 30μ΄μ μΉ΄νμ λμ°©νμ¬ μμλλ‘ 1λ², 2λ², 0λ², 1λ² μλ£λ₯Ό μ£Όλ¬Έν κ²½μ°, μμ μμ ν 30μ΄λΆν° 42μ΄ μ¬μ΄μ 3λͺ μ μλμ΄ κΈ°λ€λ¦¬κ² λκ³ , μ΄λκ° λμμ κΈ°λ€λ¦¬κ³ μλ μλμ΄ κ°μ₯ λ§μ μκ°μ λλ€.
μ£Όμμ΄λ€ μΉ΄νμμ νλ§€νλ κ° μλ£λ€μ μ μ‘° μκ°μ λ΄μ μ μ λ°°μ΄ menuμ μ€λ μλλ€μ΄ μ£Όλ¬Έν μλ£κ° μμλλ‘ μ ν λ°°μ΄ order, μλ‘μ΄ ν λͺ μ μλμ΄ λ°©λ¬Ένλλ° κ±Έλ¦¬λ μκ°μΈ kκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§λλ€. μ€λ μΉ΄νμ λμμ μ‘΄μ¬ν μλ μμ μ΅λκ°μ return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
μ νμ¬ν
- 1 ≤ menuμ κΈΈμ΄ ≤ 100
- menu[i]λ iλ² μλ£μ μ μ‘° μκ°μ μλ―Έν©λλ€.
 - 1 ≤ menuμ μμ ≤ 100
 
 - 1 ≤ orderμ κΈΈμ΄ ≤ 10,000
- order[i]λ iλ²μ§Έ μλμ΄ μ£Όλ¬Έν μλ£μ λ²νΈμ λλ€.
 - 0 ≤ orderμ μμ < menuμ κΈΈμ΄
 
 - 1 ≤ k ≤ 100
 
μ μΆλ ₯ μmenuorderkresult
| [5, 12, 30] | [1, 2, 0, 1] | 10 | 3 | 
| [5, 12, 30] | [2, 1, 0, 0, 0, 1, 0] | 10 | 4 | 
| [5] | [0, 0, 0, 0, 0] | 5 | 1 | 
μ μΆλ ₯ μ μ€λͺ
μ μΆλ ₯ μ #1
- λ³Έλ¬Έμμ μ€λͺ ν μμμ λλ€.
 
μ μΆλ ₯ μ #2
- μμ μμ ν κ°μ₯ λ¨Όμ  λμ°©ν μλμ 0μ΄μ μ£Όλ¬Έμ λ°κ³ 30μ΄μ μΉ΄νλ₯Ό λκ°λλ€. μμ μμ ν 10μ΄μ λμ°©ν μλμ 42μ΄μ μλ£λ₯Ό λ°κ³ μΉ΄νλ₯Ό λκ°κ² λ©λλ€. κ·Έ μ¬μ΄ 20μ΄, 30μ΄, 40μ΄μ μλλ€μ΄ κ°κ° λ€μ΄μ, 40μ΄~42μ΄ μ¬μ΄μ μ΄ 4λͺ μ μλλ€μ΄ λμμ μΉ΄νμμ κΈ°λ€λ¦¬κ³ , μ΄ μκ° λμμ κΈ°λ€λ¦¬λ μλ μμ μ΅λκ°μ λλ€.
 
μ μΆλ ₯ μ #3
- 0μ΄, 5μ΄, 10μ΄, 15μ΄, 20μ΄μ μλμ΄ λ€μ΄μ€κ³ , 5μ΄, 10μ΄, 15μ΄, 20μ΄, 25μ΄μ μλμ΄ λκ°λλ€. μ μ₯κ³Ό ν΄μ₯ μκ°μ΄ κ²ΉμΉλ κ²½μ°, λκ°λ μλμ΄ λ¨Όμ  ν΄μ₯ν λ€μμ λ€μ΄μ€λ μλμ΄ μ μ₯νλ―λ‘, μΉ΄νμμ λμμ κΈ°λ€λ¦¬λ μλ μμ μ΅λκ°μ 1μ λλ€.
 
μλ£κ΅¬μ‘°
- 2μ°¨μ λ°°μ΄ : μλλ€μ {λμ°©μκ°, μ£Όλ¬Έν μλ£μ μμμκ°} μ μ μ₯
 - ν : μμ°¨μ μΌλ‘ μλμ λ£κ³ λ¨Όμ  λ€μ΄μ¨ μλμ μ²λ¦¬
 
νμ΄κ³Όμ 
1. νμ¬μκ°(time)μ κ°±μ
1-1. λκΈ°μ€( νλ‘ κ΅¬νν¨ )μ μλμ΄ μμ κ²½μ° : time += λ¨Όμ  λμ°©ν μλμ μλ£ μ μ‘°μκ°
1-2. λκΈ°μ€μ μλμ΄ μμ κ²½μ° : time = λ€μ μλμ μ μ₯μκ°
2. νμ¬μκ°(time)λ³΄λ€ μκ±°λ κ°μΌλ©΄ μλλ€μ λκΈ°μ€(ν)μ μ½μ
3. ν μ¬μ΄μ¦λ‘ μΉ΄νμ λμμ μ‘΄μ¬ν μλ μμ μ΅λκ° κ°±μ
3-1. answerμ return ν λλ 1μ΄ μλ κ²½μ° +1 μ ν΄μ€μΌ ν©λλ€.
λκΈ°μ€ μ μΌ μμ μΈμμ νμμ λΉΌκ³ λμ, λ€λ₯Έ μΈμλ€μ λκΈ°μ€μ μΆκ°νκΈ° λλ¬Έμ λλ€.
μκ²λμ 
- νμ¬μκ°(time)μ κ°±μ νλ λΆλΆμμ μ€μκ° μμμ΅λλ€. λκΈ°μ€μ μλμ΄ μλ κ²½μ°λ₯Ό κ³ λ €ν΄μ timeμ κ°±μ μμΌμ€μΌ νμ΅λλ€. ν μ€νΈμΌμ΄μ€κ° μλ, μμΈμ μΈ μν©μ μ κ³ λ €ν΄μ λ¬Έμ λ₯Ό νμ΄μΌ κ² λ€κ³ μκ°νμ΅λλ€.
 - λ¬Έμ μμ ν μλμ΄ μΉ΄νμμ λκ°κ³Ό λμμ λ€λ₯Έ μλμ΄ μΉ΄νμ λ€μ΄μ¬ κ²½μ°, λκ°λ μλμ΄ λ¨Όμ  ν΄μ₯ν λ€μ λ€μ΄μ€λ μλμ΄ μ μ₯ν©λλ€ λΌλ μ‘°κ±΄μ΄ ννΈμμ΅λλ€. μ½λλ 쑰건μ²λΌ μλμ ν΄μ₯μν€κ³ λ€λ₯Έ μλμ μ μ₯ μν€λ μμλ‘ κ΅¬νν΄μΌ νμ΅λλ€.
 - μ΄μ  'μ΄μ체μ ' λ¬Έμ μ λΉμ·νκ² νλ₯Ό λκ³ μκ°μ κ°±μ νλ λ¬Έμ μμ΅λλ€.
 
μ 체μ½λ
import java.util.*;
class Solution {
    int[][] customer; // {λμ°©μκ°, μ£Όλ¬Έν μλ£μ μμμκ°}
    int k;
    
    int solve(){
        
        int time = 0, idx = 0, max = 0;
        Deque<int[]> q = new ArrayDeque<>();
        
        while(idx < customer.length){
            
            if(!q.isEmpty()){ // λκΈ° μ€μ μλμ΄ μλ€λ©΄ 
                int[] cur = q.pollFirst(); // λ¨Όμ  λ€μ΄μ¨ μλμ μλ£λ₯Ό λ§λ€κΈ°
                time += cur[1];
            }else{ // λκΈ° μ€μ μλμ΄ μλ€λ©΄
                time = customer[idx][0]; // λ€μ μλμ μ
μ₯ μκ°μ timeμΌλ‘ λ§λ€κΈ°
            }
            
            // νμ¬ time λ³΄λ€ μκ±°λ κ°μΌλ©΄ νμ λ£κΈ° 
            while(idx < customer.length && customer[idx][0] <= time){
                q.offer(customer[idx]);
                idx += 1;
            }
            
            int qSize = q.size();
            max = qSize > max ? qSize : max;
        }
        
        return max;
    }
    
    public int solution(int[] menu, int[] order, int k) {
        int answer = 0;
        customer = new int[order.length][2];
        this.k = k;
        
        int time = 0;
        for(int i=0;i<order.length;i++){
            customer[i][0] = time;
            customer[i][1] = menu[order[i]];
            time += k;
        }
        
        answer = solve();
        
        answer = answer == 1 ? 1 : answer + 1;
        
        return answer;
    }
}

'πμ½λ©ν μ€νΈ:CodingTest' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| JAVAμμ Stringμ νμ μν€λ κ°λ¨ν λ°©λ² (2) | 2025.05.07 | 
|---|---|
| 10μ§μλ₯Ό nμ§λ²μΌλ‘ λ°κΎΈλ ν¨μ (0) | 2025.05.07 | 
| [PCCP λͺ¨μκ³ μ¬ #1] 4λ² - μ΄μμ²΄μ  (0) | 2024.12.12 | 
| PCCP λͺ¨μκ³ μ¬1ν 3λ² (0) | 2024.12.11 | 
| λ©λμ¬μ μ μ¬λ€ (0) | 2024.12.04 |