๐Ÿ‘’ ๋ญ? 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์—์„œ์˜ ํ(์ธ์ฒ™ํ•˜๋Š” ๋ฐฐ์—ด)์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

๋ฐ˜์‘ํ˜•