๋ฌธ์ ๋งํฌ
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์คํฌํธ๋ฆฌ
programmers.co.kr
์ ๊ทผ ๋ฐฉ๋ฒ
๋์ ํ์ด
์กฐ๊ฑด๋ณ๋ก ๋๋์ด ์ฝ๋๋ฅผ ๊ตฌํํ์๋ค.
1. skillTree์ ๋ฐฐ์ด์ด ์ ํ ์คํฌ์ ํฌํจํ ๋ (skillTree.includes(skill[i-1])
1. 1 skillTree์์ ์ ํ ์คํฌ๋ณด๋ค ๋ค์ ์คํฌ์ index๋ฒํธ๊ฐ ํฌ๊ฑฐ๋ ๋ค์ ์คํฌ์ด ์์ ๋
=> isRightSkillTree = true;
1. 2 skillTree์์ ์ ํ ์คํฌ๋ณด๋ค ๋ค์ ์คํฌ์ index ๋ฒํธ๊ฐ ์๊ณ ๋ค์ ์คํฌ์ด ์์ ๋
=> isRightSkillTree = false;
2. skillTree์ ๋ฐฐ์ด์ด ์ ํ ์คํฌ์ ํฌํจํ์ง ์์ ๋
2. 1 ์ ํ์คํฌ์ ํฌํจํ์ง ์๋๋ฐ, ๋ค์ ์คํฌ์ ํฌํจํ ๊ฒฝ์ฐ
=> isRightSkillTree = false;
2. 2 skill์ ๋ชจ๋ ์คํฌ์ ํฌํจํ์ง ์๋ ๊ฒฝ์ฐ (์์๊ฐ ์๋ ์คํฌ๋ค๋ก๋ง ์ด๋ค์ ธ ์์)
=> isRightSkillTree = true;
ํ์ง๋ง ์ด๋ฌํ ์ ๊ทผ์ด ์ด๋๊ฐ ์๋ชป๋๋์ง.. ํ ์คํธ ์ผ์ด์ค 14๋ฒ๋ง ํต๊ณผํ์ง ๋ชปํ๋ค.
๊ทธ๋ฐ๋ฐ ์์ธ ์ผ์ด์ค๋ฅผ ์ฐพ๋ค๊ฐ ๋ ์ข์ ํ์ด๋ฅผ ๋ฐ๊ฒฌํ์๋ค.
์์ด๋์ด : ์คํฌํธ๋ฆฌ์์ ์์๊ฐ ์๋ ์คํฌ๋ค์ ๊ณ ๋ คํ ํ์๊ฐ ์๋ค.
filter ๋ฉ์๋๋ฅผ ํตํด skill_trees์ skill์ ์๋ ์คํฌ๋ง ์ถ์ถํ์ฌ ์์๋ฅผ ํ์ ํ๋ฉด ๋๋ค.
// ๋ ์ข์ ํ์ด
function solution(skill, skill_trees) {
var answer = 0;
const orderSkillTree = new Array(skill_trees.length).fill("");
// skill_trees์ elements ์ค skill์ ํฌํจ๋๋ elements๋ง ์ฐพ๋๋ค.
skill_trees.filter((skillTree,idx) => {
for(let i = 0; i < skillTree.length; i++){
if(skill.includes(skillTree[i])) orderSkillTree[idx] += skillTree[i]
}
})
// ์ฐพ์ orderSkillTree์ skill์ orderSkillTree์ ๊ธธ์ด ๋งํผ ์๋ฅธ substr์ด ๊ฐ๋ค๋ฉด +1์ ํ๋ค.
orderSkillTree.forEach(skillTree => {
if(skillTree === skill.substring(0, skillTree.length)) answer += 1;
})
return answer;
}
// ๋์ ํ์ด
function solution(skill, skill_trees) {
var answer = 0;
let isRightSkillTree = false;
skill_trees.forEach(skillTree => {
for(let i = 1; i < skill.length; i++){
// ์ด์ ์คํฌ์ด ์์๋
if(skillTree.includes(skill[i-1])){
//์ด์ ์คํฌ๋ณด๋ค ๋ค์ ์คํฌ์ index๋ฒํธ๊ฐ ํฌ๊ฑฐ๋ ๋ค์ ์คํฌ์ด ์์๋
if(skillTree.indexOf(skill[i-1]) < skillTree.indexOf(skill[i]) || skillTree.indexOf(skill[i]) === -1){
isRightSkillTree = true;
}
// ์ด์ ์คํฌ๋ณด๋ค ๋ค์ ์คํฌ์ index๋ฒํธ๊ฐ ์๊ณ ๋ค์ ์คํฌ์ด ์์๋
else {
isRightSkillTree = false;
break;
}
}else{
// ์ด์ ์คํฌ์ ์๋๋ฐ ๋ค์ ์คํฌ์ ์์๋
if(skillTree.includes(skill[i])){
isRightSkillTree = false;
break;
}
// skill๊ณผ ๊ฒน์น๋ ์คํฌ์ด ์์๋ (์์๊ฐ ์๊ด์๋ ์คํฌ๋ค๋ง ์กด์ฌ)
isRightSkillTree = true;
}
}
if(isRightSkillTree) answer += 1;
})
return answer;
}
'์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Javascript] ์ฌ๋ฐ๋ฅธ ๊ดํธ (12909) (0) | 2022.06.19 |
---|---|
[Javascript] ๋ค์ ํฐ ์ซ์ (12911) (0) | 2022.06.18 |
[Javascript] ์ซ์ ๋ธ๋ก (12923) (0) | 2022.06.15 |
[Javascript] ํฐ ์ ๋ง๋ค๊ธฐ (42883) (0) | 2022.06.12 |
[Javascript] ๊ตฌ๋ช ๋ณดํธ (42885) (0) | 2022.06.11 |