문제
1부터 13까지의 수에서, 1은 1, 10, 11, 12, 13 이렇게 총 6번 등장합니다. 정수 i, j, k가 매개변수로 주어질 때, i부터
j까지 k가 몇 번 등장하는지 return 하도록 solution 함수를 완성해주세요
내 코드
function solution(i, j, k) {
let count = 0;
for (let num = i; num <= j; num++) {
const numString = num.toString();
for(let digit of numString.toString()) {
if (digit === k.toString()) {
count++
}
}
}
return count;
}
- 원래 Array.from()을 이용해서 i부터 j까지의 배열을 먼저 만들었었다. 하지만 문자열로 바꾸고 k를 찾는 중에 11과 같은 같은 수의 숫자를 만나면 1이 포함되었다는 것만 확인하고 1을 반환하여 방법을 바꿔보았다.
- 생각해보니 굳이 배열을 만들 필요는 없었다. 반복문으로 i부터 j까지 반복하고 문자열로 바꿔 k가 있는지 확인하였다.
다른 사람 코드
function solution(i, j, k) {
let a ='';
for(i;i<=j;i++){
a += i;
}
return a.split(k).length-1;
}
- split을 항상 ("") 사용해서 쪼개기만 했지 k로 나눌 생각은 못했다.
- length -1 ;이 헷갈렸는데
const string = 'hello, world, javascript';
console.log(string.split(','));
//['hello', 'world', 'javascript']
- 이거 보고 이해하면 될 것 같다. k로 나눌시에 k보다 하나가 더 생기므로 -1
'코딩테스트' 카테고리의 다른 글
[코딩테스트] 합성수 찾기 (0) | 2024.04.18 |
---|---|
[코딩테스트] 문자열 정렬하기(2) (0) | 2024.04.17 |
[코딩테스트] 문자열 정렬하기(1) (0) | 2024.03.30 |
[프로그래머스] 머쓱이보다 키 큰 사람 (0) | 2024.03.21 |
[프로그래머스] 코드 처리하기 js (0) | 2024.03.20 |