Jieunny์˜ ๋ธ”๋กœ๊ทธ

[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ํ–„๋ฒ„๊ฑฐ ๋งŒ๋“ค๊ธฐ ๋ณธ๋ฌธ

Study/Coding Test

[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ํ–„๋ฒ„๊ฑฐ ๋งŒ๋“ค๊ธฐ

Jieunny 2023. 2. 2. 15:30

๐Ÿ“Œ  ๋ฌธ์ œ

ํ–„๋ฒ„๊ฑฐ ๊ฐ€๊ฒŒ์—์„œ ์ผ์„ ํ•˜๋Š” ์ƒ์ˆ˜๋Š” ํ–„๋ฒ„๊ฑฐ๋ฅผ ํฌ์žฅํ•˜๋Š” ์ผ์„ ํ•ฉ๋‹ˆ๋‹ค. ํ•จ๊ป˜ ์ผ์„ ํ•˜๋Š” ๋‹ค๋ฅธ ์ง์›๋“ค์ด ํ–„๋ฒ„๊ฑฐ์— ๋“ค์–ด๊ฐˆ ์žฌ๋ฃŒ๋ฅผ ์กฐ๋ฆฌํ•ด ์ฃผ๋ฉด ์กฐ๋ฆฌ๋œ ์ˆœ์„œ๋Œ€๋กœ ์ƒ์ˆ˜์˜ ์•ž์— ์•„๋ž˜์„œ๋ถ€ํ„ฐ ์œ„๋กœ ์Œ“์ด๊ฒŒ ๋˜๊ณ , ์ƒ์ˆ˜๋Š” ์ˆœ์„œ์— ๋งž๊ฒŒ ์Œ“์—ฌ์„œ ์™„์„ฑ๋œ ํ–„๋ฒ„๊ฑฐ๋ฅผ ๋”ฐ๋กœ ์˜ฎ๊ฒจ ํฌ์žฅ์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ƒ์ˆ˜๊ฐ€ ์ผํ•˜๋Š” ๊ฐ€๊ฒŒ๋Š” ์ •ํ•ด์ง„ ์ˆœ์„œ(์•„๋ž˜์„œ๋ถ€ํ„ฐ, ๋นต – ์•ผ์ฑ„ – ๊ณ ๊ธฐ - ๋นต)๋กœ ์Œ“์ธ ํ–„๋ฒ„๊ฑฐ๋งŒ ํฌ์žฅ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ƒ์ˆ˜๋Š” ์†์ด ๊ต‰์žฅํžˆ ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์ˆ˜๊ฐ€ ํฌ์žฅํ•˜๋Š” ๋™์•ˆ ์† ์žฌ๋ฃŒ๊ฐ€ ์ถ”๊ฐ€์ ์œผ๋กœ ๋“ค์–ด์˜ค๋Š” ์ผ์€ ์—†์œผ๋ฉฐ, ์žฌ๋ฃŒ์˜ ๋†’์ด๋Š” ๋ฌด์‹œํ•˜์—ฌ ์žฌ๋ฃŒ๊ฐ€ ๋†’์ด ์Œ“์—ฌ์„œ ์ผ์ด ํž˜๋“ค์–ด์ง€๋Š” ๊ฒฝ์šฐ๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ƒ์ˆ˜์˜ ์•ž์— ์Œ“์ด๋Š” ์žฌ๋ฃŒ์˜ ์ˆœ์„œ๊ฐ€ [์•ผ์ฑ„, ๋นต, ๋นต, ์•ผ์ฑ„, ๊ณ ๊ธฐ, ๋นต, ์•ผ์ฑ„, ๊ณ ๊ธฐ, ๋นต]์ผ ๋•Œ, ์ƒ์ˆ˜๋Š” ์—ฌ์„ฏ ๋ฒˆ์งธ ์žฌ๋ฃŒ๊ฐ€ ์Œ“์˜€์„ ๋•Œ, ์„ธ ๋ฒˆ์งธ ์žฌ๋ฃŒ๋ถ€ํ„ฐ ์—ฌ์„ฏ ๋ฒˆ์งธ ์žฌ๋ฃŒ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ–„๋ฒ„๊ฑฐ๋ฅผ ํฌ์žฅํ•˜๊ณ , ์•„ํ™‰ ๋ฒˆ์งธ ์žฌ๋ฃŒ๊ฐ€ ์Œ“์˜€์„ ๋•Œ, ๋‘ ๋ฒˆ์งธ ์žฌ๋ฃŒ์™€ ์ผ๊ณฑ ๋ฒˆ์งธ ์žฌ๋ฃŒ๋ถ€ํ„ฐ ์•„ํ™‰ ๋ฒˆ์งธ ์žฌ๋ฃŒ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ–„๋ฒ„๊ฑฐ๋ฅผ ํฌ์žฅํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, 2๊ฐœ์˜ ํ–„๋ฒ„๊ฑฐ๋ฅผ ํฌ์žฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ƒ์ˆ˜์—๊ฒŒ ์ „ํ•ด์ง€๋Š” ์žฌ๋ฃŒ์˜ ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ ๋ฐฐ์—ด ingredient๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ƒ์ˆ˜๊ฐ€ ํฌ์žฅํ•˜๋Š” ํ–„๋ฒ„๊ฑฐ์˜ ๊ฐœ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜์‹œ์˜ค.


์ œํ•œ์‚ฌํ•ญ

  • 1 ≤ ingredient์˜ ๊ธธ์ด ≤ 1,000,000
  • ingredient์˜ ์›์†Œ๋Š” 1, 2, 3 ์ค‘ ํ•˜๋‚˜์˜ ๊ฐ’์ด๋ฉฐ, ์ˆœ์„œ๋Œ€๋กœ ๋นต, ์•ผ์ฑ„, ๊ณ ๊ธฐ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

 

๐Ÿ’ก  ์•„์ด๋””์–ด

ingredient ๋ฐฐ์—ด์„ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พผ๋‹ค.

1231 ์„ ์ •๊ทœ์‹์œผ๋กœ ์ €์žฅํ•ด๋†“๊ณ , 1231์ด ์—†์„ ๋•Œ ๊นŒ์ง€ ๋ฐ”๊พผ ๋ฌธ์ž์—ด์•ˆ์—์„œ 1231์„ ์ œ๊ฑฐํ•ด์ค€๋‹ค.

์ œ๊ฑฐํ•  ๋•Œ๋งˆ๋‹ค answer++ ํ•ด์ค€๋‹ค.

=> ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค 5๊ฐœ๊ฐ€ ์‹œ๊ฐ„์ดˆ๊ณผ๋กœ ํ†ต๊ณผ ์•ˆ๋จ

 

์ฒ˜์Œ์— ์Šคํƒ์œผ๋กœ ํ’€๊นŒ ํ•˜๋‹ค๊ฐ€ ๋ฌธ์ž์—ด๋กœ ํ‘ผ๊ฑฐ๋ผ์„œ ์Šคํƒ์œผ๋กœ ๋‹ค์‹œ ๋Œ์•„๊ฐ€์„œ ํ’€์–ด๋ดค๋‹ค.

๋ฐฐ์—ด ํ•˜๋‚˜ ์„ ์–ธํ•˜๊ณ , ingredient ๋Œ๋ฉด์„œ ํ•˜๋‚˜์”ฉ ๋„ฃ๊ณ  ๊ธธ์ด 4์ด์ƒ ๋˜๋ฉด ๋’ค์—์„œ๋ถ€ํ„ฐ 4๊ฐœ ๋นผ์„œ '1231'์ธ์ง€ ํ™•์ธ

'1231'์ด๋ฉด pop()์œผ๋กœ ํ•˜๋‚˜์”ฉ ๋นผ์ค€๋‹ค.

 

โœ๏ธ  ํ’€์ด

1. ์ฒ˜์Œ ์‹œ๋„ํ•œ ํ’€์ด -> ๋ฌธ์ž์—ด(์ •๊ทœ์‹) ์ด์šฉ, ์‹œ๊ฐ„ ์ดˆ๊ณผ

function solution(ingredient) {
  var answer = 0;

  let ingredientStr = ingredient.join('');
  let sequence = /1231/;

  while(sequence.test(ingredientStr)){
    ingredientStr = ingredientStr.replace(sequence, '');
    answer++;
  }

  return answer;
}

 

2. ์Šคํƒ ํ’€์ด๋ฒ•

function solution(ingredient) {
  var answer = 0;

  const stk = [];

  for(let i=0; i<ingredient.length; i++){
    stk.push(ingredient[i]);

    if(stk.length >= 4){
      let str = stk.slice(-4).join('');
      if(str === '1231'){
        stk.pop();
        stk.pop();
        stk.pop();
        stk.pop();
        answer++;
      }
    }
  }

  return answer;
}

 

โžฐ ์‹œ๊ฐ„ ๋ณต์žก๋„ ๊ณ„์‚ฐ์„ ๋”ฐ๋กœ ์•ˆํ•˜๊ณ  ์ƒ๊ฐ๋‚˜๋Š”๋Œ€๋กœ ํ’€๋‹ค๋ณด๋‹ˆ ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋” ๋น ๋ฅธ์ง€ ์ƒ๊ฐ ์•ˆํ•˜๊ฒŒ ๋˜์„œ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋œจ๋Š” ๊ฑฐ ๊ฐ™๋‹ค..