https://school.programmers.co.kr/learn/courses/30/lessons/120887
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
매개변수로 주어진 i와 j 사이의 연속된 숫자들 중 k 가 등장한 횟수를 return 하는 문제
i가 1이고 j가 13이라고 가정하고, k가 1일때 => 1 ~ 13 중 1은 1, 10, 11, 12, 13 총 6번 등장한다
1. 연속된 숫자를 배열에다가 다 담는다
let arr = []
for(let a = i; a <= j; a++) {
arr.push(a)
}
2. for문을 다 돌아서 나온 arr를 문자열로 만들기 위해 join 메소드를 사용해준다
let stringArr = arr.join("")
3. 2번을 통해 만들어진 stringArr문자열을 for문 돌려서 각 문자가 k와 같으면 answer의 카운트 값을 하나씩 올려준다
for(let i = 0; i < stringArr.length; i++) {
if(Number(stringArr[i]) === k) {
answer++;
}
}
stringArr의 각 문자의 타입은 string이고 k는 number였기 때문에 타입을 맞춰줘야 했다
전체코드
function solution(i, j, k) {
let answer = 0;
let arr = []
for(let a = i; a <= j; a++) {
arr.push(a)
}
let stringArr = arr.join("")
for(let i = 0; i < stringArr.length; i++) {
if(Number(stringArr[i]) === k) {
answer++;
}
}
return answer
}
다른 사람의 풀이를 봐보니 좀 참고할만한게 있어 긁어옴
function solution(i, j, k) {
let a ='';
for(i;i<=j;i++){
a += i;
}
return a.split(k).length-1;
}
i ~ j 까지의 연속된 숫자를 담을 a 변수를 만들어주고 빈 문자열을 초기값으로 부여한다
for문을 돌면서 i ~ j 까지의 숫자를 담은 문자열을 a를 만들고
해당 문자열을 k로 split 메소드를 사용해 분리해준다.
⭐️ k가 9라고 가정하면 '191'인 경우 9로 분리하면 '1', '1'이고 '19191'이면 '1', '1', '1' 이렇게 9의 개수보다 항상 1이 많아지므로 length 값에서 -1을 해준다.
'TIL' 카테고리의 다른 글
| [코테] - 외계행성의 나이 (1) | 2023.10.01 |
|---|---|
| [코테] 두 문자열 비교시엔 sort 메소드 이용하기 (0) | 2023.09.27 |
| 8월 25일 - TIL) supabase - 게시글 두개 이상 조건 filter 걸기 (0) | 2023.08.26 |
| 8월 24일 TIL - supabase) 북마크 구현하기 (1) | 2023.08.25 |
| 8월 23일 TIL - 타입스크립트에서 무한스크롤 구현하기 (0) | 2023.08.24 |