Blog

숫자 찾기

문제 #

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

  • 제한사항
    • 0 < num < 1,000,000
    • 0 ≤ k < 10
    • num에 k가 여러 개 있으면 가장 처음 나타나는 자리를 return 합니다.
  • 입출력 예
    num k result
    29183 1 3
    232443 4 4
    123456 7 -1

나의 풀이 #

import java.util.*;

class Solution {
    public int solution(int num, int k) {
        List<Integer> list = new ArrayList<>();
        
        while (num > 0){
            list.add(0, num%10);
            num = num/10;
        }
        
        return list.contains(k) == true? list.indexOf(k)+1 : -1;
    }
}
  • while문을 통해 정수num을 정수list로 변환한다.
    • add(index,값)을 이용하여 순서가 변하지 않도록 한다.
  • list의 값을 k와 비교하여 같은 값이 있을경우 첫번째 인덱스+1의 값을 리턴하며 같은 값이 없을 경우 -1을 리턴한다.

다른 사람의 풀이 #

class Solution {
    public int solution(int num, int k) {
        return ("-" + num).indexOf(String.valueOf(k));
    }
}
  • list형태 대신 문자열로 변환하였다.
  • 문자열num의 앞에 의미없는 기호를 추가하여 인덱스에 +1한 효과를 주었다.

관련개념 학습 #

  • i번째 index에 문자열 추가
    • list.add(i, 문자열);