[ 2023-08-23 ๐Ÿ“Ÿ TIL ]

Burkeyยท2023๋…„ 8์›” 23์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
148/157

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV. 2 ํ”„๋กœ์„ธ์Šค JS


๋ฌธ์ œ

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

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

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

์ œํ•œ์‚ฌํ•ญ

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

์ž…์ถœ๋ ฅ ์˜ˆ

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

์ฝ”๋“œ

function solution(priorities, location) {
    let process = [], result = []
    let front = 0, max = 0
    
    for (let i = 0; i < priorities.length; i++){
        process.push(i) // ํ˜„์žฌ ๊ฐ’๋“ค์˜ ์ธ๋ฑ์Šค๋งŒ ๋”ฐ๋กœ ์ •๋ ฌ
    }
    
    while (priorities.length > 0) {
        front = priorities.shift() // ์•ž์— ๊ฐ’ ๋นผ๊ธฐ
        max = Math.max(...priorities) // ๋‚˜๋จธ์ง€ ์ˆซ์ž ์ค‘ ๋†’์€์ˆœ์œ„์žˆ๋Š”์ง€ ํ™•์ธ
        if(front < max) { // ๋‚˜๋จธ์ง€ ์ค‘์— ๋” ๋†’์€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ
            priorities.push(front)
            process.push(process.shift()) 
        }else{ // ๋‚˜๋จธ์ง€ ์ค‘์— ๋” ๋†’์€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ
            result.push(process.shift()) // ์ถœ๋ ฅํ•œ ์ธ๋ฑ์Šค๋“ค ์ €์žฅ
        }
    }
    for (let i = 0; i < result.length;i++){
        if(result[i] == location){ //์›ํ•˜๋Š” ์ธ๋ฑ์Šค์˜ ์ˆœ์„œ ์ถœ๋ ฅ
            return i+1;
        } 
    }
}

์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ ๋•Œ๋ฌธ์— ์–ด๋ ค์› ๋‹ค.

profile
์Šคํƒฏ ์˜ฌ๋ฆฌ๋Š” ์ค‘

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