문제 설명
존재들 숫자와 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된 값을 리턴하기 위해 사용
*/