var countPoints = function(rings) {
const hash = {};
for(let i=0; i<rings.length; i+=2) {
if(hash[rings[i+1]]) {
hash[rings[i+1]] += rings[i];
} else {
hash[rings[i+1]] = rings[i]
}
}
let result = 0;
for(key in hash) {
if(hash[key].includes('B') && hash[key].includes('R') && hash[key].includes('G')) {
result++
}
}
return result;
};
문제의 태그로 적혀있는 Hash Table을 이용해서 풀었다.
문자열rings
를 for문을 이용해서 순회하면서 0부터 9까지의rod
별 링을 객체hash
에 기록하였다.
그리고hash
에 for...in문을 이용해서'R', 'G', 'B'
세 가지 색상을 모두 갖고 있는지 확인하였다.
var countPoints = function(rings) {
const rods = '0123456789'
let count = 0;
for(rod of rods) {
if(rings.includes(`B${rod}`) &&
rings.includes(`G${rod}`) &&
rings.includes(`R${rod}`)) {
count++;
}
}
return count
};
Hash Table을 사용하지않고 해결하는 방법도 있다.
rings
를 순회하는 것이 아니라 0부터 9까지의rod
들을 순회하는 것이다.
특정rod
에서rings
에B(rod), G(rod), R(rod)
가 존재하는지 확인하는 것이다. 개수는 중요하지않고 모든 색상이 존재하는지만 중요하기 때문이다.