프론트/JS)코딩테스트
string) 7의 개수 / 배열에 특정 문자 개수 세기(카운트), for...of문안에서 문자열만들기-for (const c of nums.join(''))
뽀짝코딩
2024. 9. 23. 18:02
728x90
문제 설명
머쓱이는 행운의 숫자 7을 가장 좋아합니다. 정수 배열 nums가 매개변수로 주어질 때, 7이 총 몇 개 있는지 return 하도록 solution 함수를 완성해보세요.
제한사항
- 1 ≤ nums의 길이 ≤ 100
- 0 ≤ nums의 원소 ≤ 100,000
입출력 예
nums result
[7, 77, 17] | 4 |
[10, 29] | 0 |
입출력 예 설명
입출력 예 #1
- [7, 77, 17]에는 7이 4개 있으므로 4를 return 합니다.
입출력 예 #2
- [10, 29]에는 7이 없으므로 0을 return 합니다.
/**
* @param {number[]} nums
* @return {number}
*/
const solution = nums => {
// do something
};
console.log(solution([7, 77, 17])); // 4
console.log(solution([10, 29])); // 0
풀이
1번 풀이 filter, .length(인덱스 길이)
- 배열 내 정수를 일의자리로 하나씩 문자로 바꾸고
- 문자7과 같은것의 길이를 구한다. 길이는 곧 개수, 카운트를 의미함.
/**
* @param {number[]} nums
* @return {number}
*/
const solution = nums => {
const splitNums = nums.join('').split('');
return splitNums.filter(num => num === '7').length;
};
console.log(solution([7, 77, 17])); // 4
console.log(solution([10, 29])); // 0
위 코드를 더 간결하게 하면 아래와 같다.
스프레드 문법을 쓰고 배열안에 .join('') 메서드를 썼다.
이렇게 스프레드 문법과 함께 join( )을 사용할 수 있다는걸 이번에 알았다.
const solution = nums => {
return [...nums.join('')].filter(num => num === '7').length;
};
console.log(solution([7, 77, 17])); // 4
console.log(solution([10, 29])); // 0
2번 풀이 for...of, += 총합
- 배열을 문자열로 변경하고
- for...of로 문자열을 돌면서 인덱스 하나하나를 '7' 과 비교해
- '7'일때 cnt를 1씩 증가 시킨다.
- cnt++ 과 cnt += 1 은 같은 의미.
for of문 안에 .join('')을 써서 배열을 문자열을 만들어 돌렸다.
const solution = nums => {
let cnt = 0;
for (let c of nums.join('')) {
if (c === '7') cnt++; // cnt += 1; // 같은 의미
}
return cnt;
};
console.log(solution([7, 77, 17])); // 4
console.log(solution([10, 29])); // 0
위 코드를 생각하기 어려웠던 점이 보통은 배열을 문자열로 먼저 변경하고 나서 for...of문을 돌린다.
const solution = nums => {
const str = [...nums].join('');
let cnt = 0;
for (let c of nums) {
if (c === '7') cnt++;
}
return cnt;
};
};
console.log(solution([7, 77, 17])); // 4
console.log(solution([10, 29])); // 0
이렇게.
생각하지 못했던 방식이라 새로웠다. 쳇지피티 만세다.
2번 풀이
정규표현식을 이용하면 String문제는 더 쉽게 풀린다
const solution = nums => {
return nums.join('').match(/7/g)?.length || 0;
}
console.log(solution([7, 77, 17])); // 4
console.log(solution([10, 29])); // 0
참고
나, 쳇지피티
반응형