문제정보
문자열로 이루어진 배열 두개가 주어집니다.
리트코드에서 비슷한 유형의 문제를 풀었던 기억이 있어서 그걸 토대로 풀어봤습니다
leetcode 500 keyboard row라는 문제랑 굉장히 흡사하네요!!
forEach를 이용해서 dic의 각 요소들을 split해주고
spell의 단어들을 모두 가지고 있는 단어들을 찾아서 answer 배열에 넣어준 다음
answer 배열의 길이가 0이 아니라면 1을 0이라면 2를 반환하게하면 될 것 같습니다
나의풀이
function solution(spell, dic) {
let answer = [] //정답을 저장해줄 배열
dic.forEach(ele => {
let spliter = [...new Set(ele)] // 각요소를 set으로 만들어 중복을 없애고 스프레드연산자로 배열화합니다.
if(spell.every(j => spliter.includes(j))) answer.push(ele) // 만약 spell의 모든 요소를 spliter가 가지고있다면 answer에 push
})
return !answer.length ? 2 : 1
}
every는 검사하는 모든 요소가 true일때 true를 반환하는 녀석이니까
만약 spell의 모든 요소를 spliter가 가지고있다면 every가 true를 반환하면서
answer 배열에 ele를 push해줍니다
근데 생각해보니까 중복 없애는 거 굳이 안해도 되겠네요 어차피 spell을 기준으로 비교하니까
function solution(spell, dic) {
let answer = []
dic.forEach(ele => {
let spliter = ele.split('')
if(spell.every(j => spliter.includes(j))) answer.push(ele)
})
return !answer.length ? 2 : 1
}
요렇게 짜도 문제없이 작동합니다.
항상 대충 구현한다음에 블로그에 글쓰면서 곰곰히 생각해보면 아..이거 안해도되는구나..
를 반복하는 기분이네요
다른사람의 풀이
function solution(spell, dic) {
return dic.filter(v=>spell.every(c=>v.includes(c))).length ? 1 : 2;
}
굳이 저처럼 안풀고 filter에 모든걸 때려박아서 푸는 방법도 있네요.. ㅎㅎ;;
반응형
'programmers' 카테고리의 다른 글
[Programmers Level 0] 숨어있는 숫자의 덧셈(2) Javascript (0) | 2022.12.01 |
---|---|
[Programmers Level 0] 치킨 쿠폰 Javascript (0) | 2022.11.30 |
[Programmers Level 0] 문자열 밀기 Javascript (0) | 2022.11.30 |
[Programmers Level 0] 컨트롤제트 Javascript (0) | 2022.11.30 |
[Programmers Level 0] 공던지기 Javascript (1) | 2022.11.30 |