반응형
문제
문제 설명
jewls가 char가 stones에 몇 개가 있는지 구하는 문제다.
내 현재 풀이
/**
* @param {string} jewels
* @param {string} stones
* @return {number}
*/
var numJewelsInStones = function(jewels, stones) {
let sum = 0;
let res = {}
for(let i of jewels){
for(let j of stones){
if( i === j){
if(res[i]){
res[i]+=1;
}else{
res[i]=1;
}
}
}
}
for(let i in res){
sum+=res[i]
}
return sum
};
문제를 보자마자 객체 형태로 담아서 풀어야겠다고 생각을 했다. 그래서 i와 j가 같으면 res [i]를 통해서 분기 처리를 했다. 알고리즘 풀이를 처음 시작했을 때 이게 이해가 안 가고 생각을 못했는데, 현재는 어렵지 않게 생각하는 나 자신이 신기하다 ㅋㅋ
내 예전풀이
/**
* @param {string} jewels
* @param {string} stones
* @return {number}
*/
var numJewelsInStones = function(jewels, stones) {
let cnt = 0;
for(i = 0; i < jewels.length; i++){
let char =jewels.charAt(i)
for(j = 0; j < stones.length; j++){
if(char === stones.charAt(j)){
cnt++;
}
}
}
return cnt
};
charAt 함수를 통해 풀이했었다. 함수를 사용한 거 보니 구글링을 했거나, 다른 분들의 답을 참고했을 것 같다.
charAr 함수는 인덱스 숫자를 인자로 넣으면, 인덱스 번호 문자열을 리턴해준다. 그 문자열을 가지고 비교를 한 뒤 결과 값을 구하는 방법이었다.
다른 사람 풀이
const numJewelsInStones = (J, S) => {
const jewels = new Set(J)
return S.split('').reduce((res, s) => res + jewels.has(s), 0)
};
has는 set 객체 안에 요소가 존재 체크를 할 수 있는 함수다. 그리고 이번에 하면서 알게 됐는데 jewels.has(s)가 true면 + 1이 되어서 정답을 도출할 수 있는 것이다.
반응형
'LeetCode' 카테고리의 다른 글
1281. Subtract the Product and Sum of Digits of an Integer (0) | 2022.06.02 |
---|---|
1431. Kids With the Greatest Number of Candies (0) | 2022.05.31 |
1512. Number of Good Pairs (0) | 2022.05.28 |
1672. Richest Customer Wealth (0) | 2022.05.26 |
2011. Final Value of Variable After Performing Operations (0) | 2022.05.25 |
댓글