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

[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์Šคํ‚ฌํŠธ๋ฆฌ ๋ณธ๋ฌธ

Study/Coding Test

[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์Šคํ‚ฌํŠธ๋ฆฌ

Jieunny 2023. 7. 25. 16:52

๐Ÿ“Œ  ๋ฌธ์ œ

์„ ํ–‰ ์Šคํ‚ฌ์ด๋ž€ ์–ด๋–ค ์Šคํ‚ฌ์„ ๋ฐฐ์šฐ๊ธฐ ์ „์— ๋จผ์ € ๋ฐฐ์›Œ์•ผ ํ•˜๋Š” ์Šคํ‚ฌ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์„ ํ–‰ ์Šคํ‚ฌ ์ˆœ์„œ๊ฐ€ ์ŠคํŒŒํฌ → ๋ผ์ดํŠธ๋‹ ๋ณผํŠธ → ์ฌ๋”์ผ๋•Œ, ์ฌ๋”๋ฅผ ๋ฐฐ์šฐ๋ ค๋ฉด ๋จผ์ € ๋ผ์ดํŠธ๋‹ ๋ณผํŠธ๋ฅผ ๋ฐฐ์›Œ์•ผ ํ•˜๊ณ , ๋ผ์ดํŠธ๋‹ ๋ณผํŠธ๋ฅผ ๋ฐฐ์šฐ๋ ค๋ฉด ๋จผ์ € ์ŠคํŒŒํฌ๋ฅผ ๋ฐฐ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์œ„ ์ˆœ์„œ์— ์—†๋Š” ๋‹ค๋ฅธ ์Šคํ‚ฌ(ํž๋ง ๋“ฑ)์€ ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ŠคํŒŒํฌ → ํž๋ง → ๋ผ์ดํŠธ๋‹ ๋ณผํŠธ → ์ฌ๋”์™€ ๊ฐ™์€ ์Šคํ‚ฌํŠธ๋ฆฌ๋Š” ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ฌ๋” → ์ŠคํŒŒํฌ๋‚˜ ๋ผ์ดํŠธ๋‹ ๋ณผํŠธ → ์ŠคํŒŒํฌ → ํž๋ง → ์ฌ๋”์™€ ๊ฐ™์€ ์Šคํ‚ฌํŠธ๋ฆฌ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์„ ํ–‰ ์Šคํ‚ฌ ์ˆœ์„œ skill๊ณผ ์œ ์ €๋“ค์ด ๋งŒ๋“  ์Šคํ‚ฌํŠธ๋ฆฌ1๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด skill_trees๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๊ฐ€๋Šฅํ•œ ์Šคํ‚ฌํŠธ๋ฆฌ ๊ฐœ์ˆ˜๋ฅผ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

 

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

์„ ํ–‰ ์Šคํ‚ฌ ์ˆœ์„œ๋ฅผ ๊ฐ์ฒด๋กœ ์ €์žฅํ•ด๋‘๊ณ , ์Šคํ‚ฌํŠธ๋ฆฌ์—์„œ ์„ ํ–‰ ์Šคํ‚ฌ์ด ์žˆ๋Š” ์Šคํ‚ฌ์„ ๋บ€ ๋‚˜๋จธ์ง€ ์Šคํ‚ฌ์„ ์ œ์™ธํ•œ๋‹ค.

๊ทธ๋Ÿผ ์„ ํ–‰ ์Šคํ‚ฌ์ด ์žˆ๋Š” ์Šคํ‚ฌ๋งŒ ๋‚จ๊ฒŒ ๋˜๊ณ , ๋ฐฐ์—ด๋กœ ๋งŒ๋“  ํ›„ ๊ฐ ์Šคํ‚ฌ์˜ ์ธ๋ฑ์Šค๊ฐ€ ์„ ํ–‰ ์Šคํ‚ฌ ์ˆœ์„œ์™€ ๋งž๋Š”์ง€ ์ฒดํฌํ•œ๋‹ค.

 

 

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

function solution(skill, skill_trees) {
  var answer = 0;
  let noRemove = '';
  const order = {};
  for(let i=0; i<skill.length; i++){
    order[skill[i]] = i;
    noRemove += skill[i];
  }

  for(let i=0; i<skill_trees.length; i++){
    const removed = skill_trees[i].split('').filter(letter => noRemove.includes(letter)).join('');
    const removedArr = removed.split('');

    let able = true;
    for(let j=0; j<removedArr.length; j++){

      if(j !== order[removedArr[j]]){
        able = false;
      }
    }
    if(able === true) answer++;
  }
  return answer;
}