Programmers Level.2 Question Review ๐ก
๋ฌธ์ ์ถ์ฒ: https://programmers.co.kr/learn/courses/30/lessons/49993
์ ํ ์คํฌ์ด๋ ์ด๋ค ์คํฌ์ ๋ฐฐ์ฐ๊ธฐ ์ ์ ๋จผ์ ๋ฐฐ์์ผ ํ๋ ์คํฌ์ ๋ปํฉ๋๋ค.
์๋ฅผ ๋ค์ด ์ ํ ์คํฌ ์์๊ฐ ์คํํฌ โ ๋ผ์ดํธ๋ ๋ณผํธ โ ์ฌ๋
์ผ๋, ์ฌ๋๋ฅผ ๋ฐฐ์ฐ๋ ค๋ฉด ๋จผ์ ๋ผ์ดํธ๋ ๋ณผํธ๋ฅผ ๋ฐฐ์์ผ ํ๊ณ , ๋ผ์ดํธ๋ ๋ณผํธ๋ฅผ ๋ฐฐ์ฐ๋ ค๋ฉด ๋จผ์ ์คํํฌ๋ฅผ ๋ฐฐ์์ผ ํฉ๋๋ค.
์ ์์์ ์๋ ๋ค๋ฅธ ์คํฌ(ํ๋ง ๋ฑ)์ ์์์ ์๊ด์์ด ๋ฐฐ์ธ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์คํํฌ โ ํ๋ง โ ๋ผ์ดํธ๋ ๋ณผํธ โ ์ฌ๋
์ ๊ฐ์ ์คํฌํธ๋ฆฌ๋ ๊ฐ๋ฅํ์ง๋ง, ์ฌ๋ โ ์คํํฌ
๋ ๋ผ์ดํธ๋ ๋ณผํธ โ ์คํํฌ โ ํ๋ง โ ์ฌ๋
์ ๊ฐ์ ์คํฌํธ๋ฆฌ๋ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
์ ํ ์คํฌ ์์ skill๊ณผ ์ ์ ๋ค์ด ๋ง๋ ์คํฌํธ๋ฆฌ1๋ฅผ ๋ด์ ๋ฐฐ์ด skill_trees๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๊ฐ๋ฅํ ์คํฌํธ๋ฆฌ ๊ฐ์๋ฅผ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
C โ B โ D
๋ผ๋ฉด CBD๋ก ํ๊ธฐํฉ๋๋คfunction solution(skill, skill_trees) {
var answer = 0;
let skillArr = skill.split(""); //skill ์์๋ฅผ ๋ฐฐ์ด๋ก ๋๋์ด๋๊ธฐ. ์ธ๋ฑ์ค๋ก ์์๋ฅผ ๋น๊ตํ ์์ .
let newStr;
skill_trees.forEach(str => {
newStr = str.split("").filter(el => skillArr.includes(el)).join("");//skillArr์ ์๋ ์์๋ค๋ง '์ฐจ๋ก๋๋ก' ๋ฐํํด์ string์ผ๋ก ๋ง๋ค๊ธฐ
if (newStr === skill.substring(0, newStr.length)) {
answer++;
}
})
return answer;
}
skill
๋ก ์ฃผ์ด์ง๋ string์ ๊ฐ ์์์ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง๊ณ ํฌ๊ธฐ๋ฅผ ๋น๊ตํ๋ฉด ์์ ๊ฒ โก๏ธ ํฐ ๊ฒ ์์๋ก ์๋์ง๋ฅผ ํ์ธํ ์ ์์ง ์์๊น...ํ๋ ๋ง์ฐํ ์๊ฐ์ ํ์๋ค.skill
์์ ๊ธ์๋ค์ด (์ฌ์ด์ฌ์ด์ ์ด๋ค ๊ธ์๋ค์ด ๋ผ์ด ์๋์ง์๋ ์๊ด์์ด)skills_trees
์์ ์์๋๋ก ๋ค์ด์๋์ง์ ์ฌ๋ถ์ด๋ค. skill_trees
์ ๊ฐ ์์๋ฅผ ๋๋ฉด์ skillArr(skill์ ๋ฐฐ์ด๋ก ์ชผ๊ฐ์ค ๊ฒ)
์ ์์์ ์ผ์นํ๋ ๊ธ์๊ฐ ์๋ ๊ฒฝ์ฐ์ ์ฐจ๋ก๋๋ก ๊ฐ์ง๊ณ ์ ์๋ก์ด ๋ฌธ์์ด(newStr
)์ ๋ง๋ค์๊ณ , ์ด ์๋ก์ด ๋ฌธ์์ด์ด skill
์ ๋ชจ๋ ๊ตฌ์ฑ์์๋ฅผ ๋๊ฐ์ด ๊ฐ์ง๊ณ ์๋ค๋ ๊ฐ์ ํ์ ์ด ๋ ๋ฌธ์์ด์ ๋น๊ตํ๋ค. filter()
๋ฉ์๋๋ก ๋ค์์ ์ ์์ด์ ์ฆ๊ฑฐ์ ๋ค. newStr = str.split("").filter(el => skillArr.includes(el)).join("");
filter()
๋ ์ฝ๋ฐฑํจ์์ ์กฐ๊ฑด์ ์ถฉ์กฑํ๋ ์์๋ค๋ง ๊ฑธ๋ฌ ๋ฐฐ์ด์ ๋ง๋ค์ด์ค ๋ฟ๋ง ์๋๋ผ, ์์๋ ๊ทธ๋๋ก ๋ฐ์์ด ๋๋ค๋ ์ ๊ธฐ์ตํ๊ธฐ!