프로그래머스 Lv.0 숫자 찾기

문제 설명

존재들 숫자와 k가 매개변수로 주어지면, num을 구성하는 숫자 중에서 만약 k num의 자릿수를 반환하고 존재하지 않는 경우 -1을 반환하도록 solve 함수를 완성합니다.


제한

  • 0 숫자 < 1,000,000
  • 0 ≤ 케이 < 10
  • num까지 k가 여러 개인 경우 첫 번째 숫자를 반환합니다.


IO 예 numkresult

29183 하나
232443 4 4
123456 7 -하나

I/O 예시 설명

I/O 예제 #1

  • 29183에서 1은 3번째 위치에 있습니다.

I/O 예제 #2

  • 232443에서는 4번째에 4가 먼저 나옵니다.

I/O 예제 #3

  • 123456에는 7이 없으므로 -1을 반환합니다.

문제를 해결하다

package Lv_0;
// 프로그래머스 Lv_0 숫자 찾기
public class FindNumber {
    public static void main(String() args){
        int num = 29183;
        int k = 1;

        int length = (int)(Math.log10(num)+1); // 정수형 길이
        int() answer = new int(length); // 숫자를 찾기 위한 배열 선언
        int result = 0; // 결과값 찾으면 위치 번호, 찾지 못하면 -1 리턴

        for(int i = length - 1; i >= 0; i--){ // 일의 자리부터 배열에 담기
            answer(i) = num % 10; // 일의 자리 반환
            num /= 10;
        }
        for(int i = 0; i < length; i++){
            if(answer(i) == k){
                result = i + 1;
                break;
            }
            else{
                result = -1;
            }
        }
        System.out.println(result);
        
    
        System.out.println(("0" + num).indexOf(String.valueOf(k)));
    }
}
// 다른풀이 
// public class FindNumber {
//     public static void main(String() args){
        
//         int num = 29183;
//         int k = 1;

//         System.out.println(("0" + num).indexOf(String.valueOf(k)));

//     }
// }
/*
Tip
1. String + int = String
2. String.valueOf(num)를 이용하여 정수형을 문자열로 변환
3. str.indexOf(k)를 통해 k가 해당되는 인덱스 출력
4. "0"을 더해주면서 문자열로 만들고 indexOf(k)가 0부터 시작이기 때문에 해당 문제에서 +1된 값을 리턴하기 위해 사용
*/