Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 프론트엔드 스쿨
- 코딩 어?
- indexOf()
- 배열을 객체로
- 5.3.8 Modifying Queries
- sql 문자열 패턴 검색
- lastIndexOf()
- Robo3T 폰트변경
- Robo3T 글씨키우기
- Robo3T 폰트 키우기
- js 문자열을 문자배열로
- 문자열 인터폴레이션
- Robo3T 글씨체 변경
- 우분투 시간 변경
- findIndex()
- 객체를 배열로
- @Moditying @Query
- 가상컴퓨터마법사
- ...점점점문법
- search()
- 스프링 데이타 JPA
- 객체의 밸류값만 찾기
- ${변수}
- 깃 토큰 만료
- sql like연산자
- 레디스 확인
- ubuntu타임존
- 객체의키값만 찾기
- 시퀄 문법
- 리엑트블로거
Archives
- Today
- Total
코딩기록
string) 7의 개수 / 배열에 특정 문자 개수 세기(카운트), for...of문안에서 문자열만들기-for (const c of nums.join('')) 본문
프론트/JS)코딩테스트
string) 7의 개수 / 배열에 특정 문자 개수 세기(카운트), for...of문안에서 문자열만들기-for (const c of nums.join(''))
뽀짝코딩 2024. 9. 23. 18:02728x90
문제 설명
머쓱이는 행운의 숫자 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
참고
나, 쳇지피티
반응형
'프론트 > JS)코딩테스트' 카테고리의 다른 글
string) 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 / match + 정규표현식, lastIndexOf(), slice (0) | 2024.09.23 |
---|---|
string) 중복된 문자 제거 / 공백포함 문자열 중복 제거 set, filter, reduce, for, for...of (0) | 2024.09.23 |
JS) 배열에 있는 요소를 문자열 배열로 (0) | 2024.09.19 |
배열 풀기, 배열 벗기기 join(' ,'); / .toString(); (0) | 2024.09.05 |
알고리즘) 기본 수학 이론 (0) | 2024.08.26 |
Comments