[ ๐—ฝ๐—ฟ๐—ผ๐—ด๐—ฟ๐—ฎ๐—บ๐—บ๐—ฒ๐—ฟ๐˜€ ] ํ”„๋กœ์„ธ์Šค - ์Šคํƒ/ํ | JavaScript

NewHaยท2025๋…„ 5์›” 2์ผ
0
post-thumbnail

๐ŸŽฏ ๋ฌธ์ œ ์„ค๋ช…

๐Ÿงฉ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv2 - ํ”„๋กœ์„ธ์Šค

์šด์˜์ฒด์ œ์˜ ์—ญํ•  ์ค‘ ํ•˜๋‚˜๋Š” ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์˜ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์—์„œ๋Š” ์šด์˜์ฒด์ œ๊ฐ€ ๋‹ค์Œ ๊ทœ์น™์— ๋”ฐ๋ผ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•  ๊ฒฝ์šฐ ํŠน์ • ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ช‡ ๋ฒˆ์งธ๋กœ ์‹คํ–‰๋˜๋Š”์ง€ ์•Œ์•„๋‚ด๋ฉด ๋ฉ๋‹ˆ๋‹ค.

  1. ์‹คํ–‰ ๋Œ€๊ธฐ ํ(Queue)์—์„œ ๋Œ€๊ธฐ์ค‘์ธ ํ”„๋กœ์„ธ์Šค ํ•˜๋‚˜๋ฅผ ๊บผ๋ƒ…๋‹ˆ๋‹ค.
  2. ํ์— ๋Œ€๊ธฐ์ค‘์ธ ํ”„๋กœ์„ธ์Šค ์ค‘ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋” ๋†’์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ฐฉ๊ธˆ ๊บผ๋‚ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ค์‹œ ํ์— ๋„ฃ์Šต๋‹ˆ๋‹ค.
  3. ๋งŒ์•ฝ ๊ทธ๋Ÿฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—†๋‹ค๋ฉด ๋ฐฉ๊ธˆ ๊บผ๋‚ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    3.1 ํ•œ ๋ฒˆ ์‹คํ–‰ํ•œ ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค์‹œ ํ์— ๋„ฃ์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.
    ์˜ˆ๋ฅผ ๋“ค์–ด ํ”„๋กœ์„ธ์Šค 4๊ฐœ [A, B, C, D]๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰ ๋Œ€๊ธฐ ํ์— ๋“ค์–ด์žˆ๊ณ , ์šฐ์„ ์ˆœ์œ„๊ฐ€ [2, 1, 3, 2]๋ผ๋ฉด [C, D, A, B] ์ˆœ์œผ๋กœ ์‹คํ–‰ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ์‹คํ–‰ ๋Œ€๊ธฐ ํ(Queue)์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ค‘์š”๋„๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ๋‹ด๊ธด ๋ฐฐ์—ด priorities์™€, ๋ช‡ ๋ฒˆ์งธ๋กœ ์‹คํ–‰๋˜๋Š”์ง€ ์•Œ๊ณ ์‹ถ์€ ํ”„๋กœ์„ธ์Šค์˜ ์œ„์น˜๋ฅผ ์•Œ๋ ค์ฃผ๋Š” location์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ช‡ ๋ฒˆ์งธ๋กœ ์‹คํ–‰๋˜๋Š”์ง€ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

๐Ÿฅ… ์ œํ•œ์‚ฌํ•ญ

  • 1 โ‰ฆ priorities์˜ ๊ธธ์ด โ‰ฆ 100
  • 1 โ‰ฆ priorities์˜ ์›์†Œ โ‰ฆ 9
  • priorities์˜ ์›์†Œ๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ ์ˆซ์ž๊ฐ€ ํด ์ˆ˜๋ก ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์Šต๋‹ˆ๋‹ค.
  • 0 โ‰ฆ location โ‰ฆ ๋Œ€๊ธฐ ํ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ์ˆ˜ - 1
  • priorities์˜ ๊ฐ€์žฅ ์•ž์— ์žˆ์œผ๋ฉด 0, ๋‘ ๋ฒˆ์งธ์— ์žˆ์œผ๋ฉด 1 โ€ฆ ๊ณผ ๊ฐ™์ด ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“ ์ž…์ถœ๋ ฅ ์˜ˆ

prioritieslocationreturn
[2, 1, 3, 2]21
[1, 1, 9, 1, 1, 1]05

๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ๋ฌธ์ œ ํ’€์ด

์šฐ์„ , ๋ฌธ์ œ์˜ ์„ค๋ช… ๋Œ€๋กœ ํ’€์ด๋ฅผ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง€๋‹ˆ ์ˆœ์„œ์™€ ํ•จ๊ป˜ ํ์— ๋„ฃ์–ด์ค๋‹ˆ๋‹ค.
ํ์—์„œ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์–ด ์šฐ์„ ์ˆœ์œ„๋ฅผ ํ™•์ธํ•˜๊ณ  ํ๋‚ด์— ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ๊ทธ๋žจ์ด ์žˆ๋‹ค๋ฉด ํ์— ๋‹ค์‹œ ๋„ฃ์–ด์ฃผ๊ณ , ์•„๋‹ˆ๋ผ๋ฉด ๊บผ๋‚ด์–ด ์ค๋‹ˆ๋‹ค.

์ตœ์ข…์ ์œผ๋กœ ๋ชจ๋‘ ์ˆ˜ํ–‰ํ•œ ๋’ค์—, location์— ํ•ด๋‹นํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๋ช‡ ๋ฒˆ์งธ๋กœ ์‹คํ–‰๋˜์—ˆ๋Š”์ง€ ์ฐพ์•„์ค๋‹ˆ๋‹ค.

function solution(priorities, location) {
    const queue = priorities.map((el, idx) => [idx, el])
    
    const printOrder = [];
    while(queue.length){
        const [idx, priority] = queue.shift();
        if(queue.some(el => el[1] > priority)){
            queue.push([idx, priority])
        }else{
            order.push([idx, priority])
        }
    }
    return order.findIndex(el => el[0] === location) + 1
}

๋ฌด์‚ฌํžˆ ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, order๋กœ ๋ชจ๋‘ ์‹คํ–‰ํ•  ํ•„์š” ์—†์–ด๋ณด์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์‹ถ์€ location์˜ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ฉด ์ˆœ์„œ๋งŒ ์ถœ๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ, order์„ ๋ฐฐ์—ด๋Œ€์‹ ์— ์ˆœ์„œ๋งŒ ๊ธฐ์–ตํ•˜๋„๋ก ๋ฐ”๊ฟ”์ฃผ๊ณ , while๋ฌธ ์•ˆ์—์„œ ์ง„ํ–‰ํ•˜๋‹ค๊ฐ€ location์˜ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋‚˜๋ฉด ํ•ด๋‹น ์ˆœ์„œ๋ฅผ ์ถœ๋ ฅํ•˜๋„๋ก ๋ฆฌํŒฉํ† ๋งํ•ด์ค๋‹ˆ๋‹ค.

function solution(priorities, location) {
    const queue = priorities.map((priority, index) => ({ index, priority }));
  
    let printOrder = 0;
    while (queue.length) {
        const current = queue.shift();

        if (queue.some(task => task.priority > current.priority)) {
            queue.push(current);
        } else {
            printOrder++;
            if (current.index === location) {
                return printOrder;
            }
        }
    }
}
profile
๋ฐฑ ๋ฒˆ์„ ๋ณด๋ฉด ํ•œ ๊ฐ€์ง€๋Š” ์•ˆ๋‹ค ๐Ÿ‘€

0๊ฐœ์˜ ๋Œ“๊ธ€