๐Ÿง  codingtest/javascript 100์ œ

๋ฌธ์ œ 86. ํšŒ์ „ ์ดˆ๋ฐฅ

awesomeyelim 2022. 4. 27. 10:31
728x90

 

 

ํšŒ์ „์ดˆ๋ฐฅ ์ง‘์— ๊ฐ„ ์˜ˆ๋ฆผ์€ ๊ฐ ์ดˆ๋ฐฅ์— ์ ์ˆ˜๋ฅผ ๋งค๊ธฐ๊ณ  ๋‚ฎ์€ ์ ์ˆ˜์˜ ์ˆœ์„œ๋กœ ์ดˆ๋ฐฅ์„ ๋จน์œผ๋ ค๊ณ  ํ•œ๋‹ค.

 

์ด๋•Œ n์œ„์น˜์— ๋†“์—ฌ์ง„ ์ดˆ๋ฐฅ์„ ๋จน๊ณ ์ž ํ• ๋•Œ ์ ‘์‹œ๊ฐ€ ๋ช‡๋ฒˆ ์ง€๋‚˜๊ฐ€๊ณ  ๋จน์„ ์ˆ˜ ์žˆ์„์ง€ ์ถœ๋ ฅํ•˜์‹œ์˜ค

 

 

 

๊ทœ์น™

  1. ์ดˆ๋ฐฅ์€ ๋†“์—ฌ์ง„ ์œ„์น˜์—์„œ ์˜ฎ๊ฒจ์ง€์ง€ x
  2. ์ง€๋‚˜๊ฐ„ ์ดˆ๋ฐฅ์€ ๋‚˜๋จธ์ง€ ์ดˆ๋ฐฅ์ด ์ง€๋‚˜๊ฐ„ ํ›„์— ๋‹ค์‹œ ๋Œ์•„์˜ด
  3. ์ดˆ๋ฐฅ์€ 1๊ฐœ์ด์ƒ ์กด์žฌ
// ์ž…๋ ฅ
point = [1, 1, 3, 2, 5]
dish = 3

// ์ถœ๋ ฅ
5

// ์ž…๋ ฅ
point = [5, 2, 3, 1, 2, 5]
dish = 1

// ์ถœ๋ ฅ
10

// point ๊ฐ ์ ‘์‹œ๋ณ„ ์ ์ˆ˜๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๋ฐฐ์—ด
// dish ๋จน๊ณ ์žํ•˜๋Š” ์ ‘์‹œ์˜ ์œ„์น˜

 

 

 

๋ฏธ๋ฆฌ ์ƒ๊ฐํ•ด ๋ด์•ผํ•  ๊ฒƒ

// ์ž…๋ ฅ
point = [1, 1, 3, 2, 5]
dish = 3 // ์„ธ๋ฒˆ์งธ ์Œ์‹์„ ๋จน์–ด์•ผํ•จ index = dish - 1

// point ์—์„œ ๋Œ์•„์•ผ๋˜๋Š” ์ˆœ์„œ
// [1, 1, 3, 2, 5] -> 5

// ์ถœ๋ ฅ
5


// ์ž…๋ ฅ
point = [5, 2, 3, 1, 2, 5]
dish = 1

// point ์—์„œ ๋Œ์•„์•ผ๋˜๋Š” ์ˆœ์„œ
// [5, 2, 3, 1, 2, 5, 5, 2, 3, 5] -> 10

// ์ถœ๋ ฅ
10

 

 

 

๋‹ต

const point = [5, 2, 3, 1, 2, 5];
// 5, 2, 3, 1, 2, 5, 5, 2, 3, 5
let dish = 1; //index

function sol(point, dish) {
  let answer = 0;
  dish -= 1;

  let s = point.slice();
  //   console.log(s);
  s.sort((a, b) => a - b); // ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ˆซ์ž์ •๋ ฌ
  //   console.log(s)
  while (true) {
    let p = point.shift();
    if (s[0] === p) {
      if (dish === 0) { // ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์ ‘์‹œ
        break;
      }
      dish -= 1;
      s.shift();
    } else { // ๊ทธ๋ ‡์ง€ ์•Š์€ ์ ‘์‹œ
      point.push(p); // ๋งจ ๋งˆ์ง€๋ง‰ ๋ฐฐ์—ด๋กœ ๋„ฃ์–ด์คŒ
      if (dish === 0) {
        dish = point.length - 1;
      } else {
        dish -= 1;
      }
    }
    answer += 1;
  }
  return answer;
}

console.log(sol(point, dish));