[js] 숫자 찾기 (lv.0)

sookyoung.k·2024년 6월 5일
post-thumbnail

정수 num과 k가 매개변수로 주어질 때, num을 이루는 숫자 중에 k가 있으면 num의 그 숫자가 있는 자리 수를 return하고 없으면 -1을 return 하도록 solution 함수를 완성해보세요.

제한사항

  • 0 < num < 1,000,000
  • 0 ≤ k < 10
  • num에 k가 여러 개 있으면 가장 처음 나타나는 자리를 return 합니다.

나의 풀이

function solution(num, k) {
    let idx = [...num.toString()].findIndex((el, i, num) => {
        return el == k
    });
    return idx == -1 ? idx : idx + 1 
}
  • num을 문자열로 바꾼 후 배열로 변환한다.
  • findIndex()를 사용하여 특정 조건을 만족하는 첫 번째 요소의 인덱스를 찾는다. el == k를 만족하는 첫 번째 요소를 찾는다.
  • findIndex()는 못 찾을 경우 -1을 반환한다. k가 배열에 있는 경우 idx + 1로 조정하여 1부터 시작하는 인덱스를 반환한다.

다른 풀이 1

function solution(num, k) {
    return num.toString().split("").map((el) => Number(el)).indexOf(k) + 1 || -1
}
  • num을 문자열로 변환한 후 split("")을 사용하여 배열로 변환한다.
  • map()을 사용하여 배열의 각 요소를 숫자로 변환한다.
  • indexOf()를 사용하여 배열에서 특정 숫자 k의 인덱스를 찾는다. 배열에 있는 경우 1부터 시작하는 인덱스를 반환하고, 없는 경우 -1을 반환한다.

다른 풀이 2

function solution(num, k) {
    let ind = (''+num).indexOf(k);
    return ind === -1 ? -1 : ind+1;
}
  • '' + num을 사용하여 숫자를 문자열로 변환한다. 문자열 연결 연산자를 사용하여 문자열로 변환하는 간단한 방법이다.
  • indexOf()를 사용하여 문자열에서 특정 문자 k의 인덱스를 찾는다. 첫 번쨰로 일치하는 문자 k의 인덱스를 반환하며, 문자가 없다면 -1을 반환한다.
  • ind가 -1일 경우 -1을 반환하고, 그렇지 않을 경우 ind + 1 코드를 통해 1부터 시작하는 인덱스를 반환한다.
profile
영차영차 😎

0개의 댓글