1. 문제
2. 전략
1) 일단 spell의 전체길이와 dic의 글자수가 다른 요소는 어차피 발음 못하므로 삭제한다.
2) dic의 각 글자에서 spell의 글자들과 비교하여 일치하는 경우 '' 으로 replace 시킨다.
(중복된 원소가 없으므로 한번만 검사하면 된다)
3) 작업된 배열 중에서 글자가 모두 교체되어 ''가 된 요소가 1개 이상일 경우 spell의 알파벳을 한번만 사용한 단어가 dic에 존재하므로 answer =1 이다.
function solution(spell, dic) {
var answer = 2;
let newDic = [];
//중복되지 않으며, spell의 원소 모두를 사용해야하므로 dic의 요소 중에서 spell의 전체의 길이와
//같은 요소만을 필터해서 newDic에 모아준다.
for(let i =0; i<dic.length; i++){
if(dic[i].length === spell.length){
newDic.push(dic[i])
}
}
for(let j =0; j<spell.length; j++){
for(let k=0; k<newDic.length; k++){
//spell배열과 newDic 배열을 모두 순회
if(newDic[k].includes(spell[j])){ // newDic요소의 글자 중 spell의 글자가 포함되어있는 경우
newDic[k] = newDic[k].replace(spell[j], '') // 없애버린다
}
}
}
if(newDic.includes('')){ // 빈 글자가 있다면 spell의 글자와 모두 일치한 문자가 존재하므로 answer = 1
answer = 1
}
return answer;
}
3. 알아야할 사항
- 배열/객체의 수정 전략을 적어놓고 시작한다.
'ComputerScience > 알고리즘, 프로그래머스' 카테고리의 다른 글
[Lv.0] 안전지대 (2차원 배열과 경우의수) (0) | 2023.01.30 |
---|---|
[Lv.0] 평행(복잡한 계산문제에서의 전략) (0) | 2023.01.30 |
[Lv.0] 영어가 싫어요(.replaceAll()) (0) | 2023.01.30 |
[Lv.0] 7의 개수 (0) | 2023.01.30 |
[Lv.0] 합성수 찾기 (0) | 2023.01.30 |
댓글