πŸ“¦ Changgo/πŸ‘’ 뭐? JS둜 PSλ₯Ό ν•œλ‹€κ³ ?

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€][JS / Javascript] ν”„λ‘œμ„ΈμŠ€

선달 2023. 5. 18. 23:47
λ°˜μ‘ν˜•

https://school.programmers.co.kr/learn/courses/30/lessons/42587

 

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

μ½”λ“œ μ€‘μ‹¬μ˜ 개발자 μ±„μš©. μŠ€νƒ 기반의 ν¬μ§€μ…˜ λ§€μΉ­. ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€μ˜ 개발자 λ§žμΆ€ν˜• ν”„λ‘œν•„μ„ λ“±λ‘ν•˜κ³ , λ‚˜μ™€ 기술 ꢁ합이 잘 λ§žλŠ” 기업듀을 λ§€μΉ­ λ°›μœΌμ„Έμš”.

programmers.co.kr

 

풀이

큐의 맨 μ•žμ— μžˆλŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό 뽑아내고 let front = priorities.push()

이 ν”„λ‘œμ„ΈμŠ€λ³΄λ‹€ μš°μ„ μˆœμœ„κ°€ 높은 μš”μ†Œκ°€ 큐에 μžˆλŠ”μ§€ κ²€μ‚¬ν•œλ’€ priorities.find(v => v > front) === undefined

λ§Œμ•½ μžˆλ‹€λ©΄ κ·ΈλŒ€λ‘œ 큐에 μ§‘μ–΄λ„£λŠ”λ‹€ prioities(front)

μ—†λ‹€λ©΄ 이건 ν•΄λ‹Ή ν”„λ‘œμ„ΈμŠ€κ°€ μ‹€ν–‰λ˜μ—ˆλ‹€λŠ” λœ»μ΄λ―€λ‘œ λ‹€μ‹œ μ§‘μ–΄λ„£μ§€ μ•ŠλŠ”λ‹€

 

μ—¬κΈ°μ„œ λ¬Έμ œκ°€ λ˜λŠ” 뢀뢄은 방금 μ‹€ν–‰ν•œ ν”„λ‘œμ„ΈμŠ€κ°€ location에 ν•΄λ‹Ήν•˜λŠ” ν”„λ‘œμ„ΈμŠ€μ˜€λŠ”μ§€μ˜ 여뢀이닀.

λ‚˜λŠ” λ”°λ‘œ 배열내에 이λ₯Ό ν‘œμ‹œν•˜κ³  μ‹Άμ§€ μ•Šμ•„ κ·Έλƒ₯ λ˜‘κ°™μ€ 크기에 location인지 μ•„λ‹Œμ§€ μ•Œλ €μ£ΌλŠ” 배열을 ν•˜λ‚˜ λ§Œλ“€μ–΄λ†“κ³  let q = [];

priorites 큐의 μ—°μ‚°κ³Ό λ˜‘κ°™μ€ 연산을 μ‹€ν–‰ν•΄μ£Όλ©° ν˜„μž¬ 뽑아낸 ν”„λ‘œμ„ΈμŠ€κ°€ location에 ν•΄λ‹Ήν•˜λŠ” ν”„λ‘œμ„ΈμŠ€μΈμ§€ μ•„λ‹Œμ§€λ₯Ό νŒλ³„ν–ˆλ‹€.

배열을 ν•˜λ‚˜ 더 λ§Œλ“€μ–΄μ•Όν•˜λŠ” μˆ˜κ³ μŠ€λŸ¬μ›€μ€ μžˆμ§€λ§Œ 괜히 κΈ°μ‘΄ prioritiesλ₯Ό λ³€ν˜•ν•˜λŠ”κ²ƒλ³΄λ‹€λŠ” λ‚˜μ„ λ“― ν•˜λ‹€.

function solution(priorities, location) {
    let q = [];
    for(let i=0; i<priorities.length; i++) {
        if(i===location) q.push(true);
        else q.push(false);
    }
    
    let ans = 0;
    while(true) {
        let front = priorities.shift();
        let f = q.shift();
        if(priorities.find(v => v > front) !== undefined) {
            priorities.push(front);
            q.push(f);
        }
        else {
            ans++;
            if(f) return ans;
        }
    }
}

 

μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 큐

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” λ”°λ‘œ νλΌλŠ” μžλ£Œκ΅¬μ‘°κ°€ 없기에 배열을 μ΄μš©ν•˜μ—¬ 큐인척 ν•΄μ•Όν•œλ‹€

queue<int> q;

q.push(1);
q.pop();
q.empty();
let q = [];

q.push(1);
q.shift();
q.length===1;

μœ„μ—λŠ” c++μ—μ„œμ˜ 큐고 μ•„λž˜λŠ” JSμ—μ„œμ˜ 큐(μΈμ²™ν•˜λŠ” λ°°μ—΄)을 λ‚˜νƒ€λ‚Έλ‹€.

λ°˜μ‘ν˜•