문제 설명
제한사항
입출력 예ijkresult
입출력 예 설명
1부터 13까지의 수에서, 1은 1, 10, 11, 12, 13 이렇게 총 6번 등장합니다. 정수 i, j, k가 매개변수로 주어질 때, i부터 j까지 k가 몇 번 등장하는지 return 하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ i < j ≤ 100,000
- 0 ≤ k ≤ 9
입출력 예ijkresult
1 | 13 | 1 | 6 |
10 | 50 | 5 | 5 |
3 | 10 | 2 | 0 |
입출력 예 설명
입출력 예 #1
- 본문과 동일합니다.
입출력 예 #2
- 10부터 50까지 5는 15, 25, 35, 45, 50 총 5번 등장합니다. 따라서 5를 return 합니다.
입출력 예 #3
- 3부터 10까지 2는 한 번도 등장하지 않으므로 0을 return 합니다.
제출 답안
function solution(i, j, k) {
let newNum = 0;
while(i<=j){
if(i.toString().includes(k)){ // k 하나라도 있으면 그 숫자 속아내기
newNum += i.toString()
}
i++
}
return newNum.toString().split("").splice(1,newNum.length-1).filter(x => x==k).length
// 숫자들 가운데 k만 속아내서 그 길이 구하기(반복되는 숫자도 속아내기 )
}
"1234567890" 이런식으로 조건을 만족하는 값들이 합쳐져서 newNum이 나와야 하는데 "01234567890"처럼 자꾸 쓸 때없이 맨앞에 0이 추가되는 바람에 3번과 8번테스트에서 오류가 났다.
그래서 0을 빼주는 splice 작업을 추가로 해주고서야 오류를 잡아낼 수 있었다.
function solution(i, j, k) {
let a ='';
for(i;i<=j;i++){
a += i;
}
return a.split(k).length-1;
}
위 코드처럼 split의 여집합을 이용했더라면 좋았을것 같다..ㅎㅎ;
'🗃️javascript > 프로그래머스' 카테고리의 다른 글
내적(Lv.1)[for문을 reduce()로 바꿔 표현한 예시] (0) | 2023.01.12 |
---|---|
가까운 수(Lv.0)[문제를 풀 방법을 모르겠으면 세분화해서 생각하자] (0) | 2023.01.12 |
2차원으로 만들기(Lv.0) (0) | 2023.01.11 |
수박수박수박수박수박수?(Lv.1)[str.repeat(횟수)] (1) | 2023.01.11 |
가운데 글자 가져오기(Lv.1)[문자열도 str[i]가능] (0) | 2023.01.10 |