숫자 찾기
문제 #
정수 num
과 k
가 매개변수로 주어질 때, num
을 이루는 숫자 중에 k
가 있으면 num
의 그 숫자가 있는 자리 수를 return하고 없으면 -1을 return 하도록 solution 함수를 완성해보세요.
- 제한사항
- 0 <
num
< 1,000,000 - 0 ≤
k
< 10 num
에k
가 여러 개 있으면 가장 처음 나타나는 자리를 return 합니다.
- 0 <
- 입출력 예
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, 문자열);