문제 설명
정수 num과 k가 매개변수로 주어질 때, num을 이루는 숫자 중에 k가 있으면 num의 그 숫자가 있는 자리 수를 return하고 없으면 -1을 return 하도록 solution 함수를 완성해보세요.
제한사항
0 < num < 1,000,000 0 ≤ k < 10 num에 k가 여러 개 있으면 가장 처음 나타나는 자리를 return 합니다.
나의 코드
class Solution {
public int solution(int num, int k) {
int answer = -1;
String str = Integer.toString(num);
String strK = Integer.toString(k);
String[] arr = str.split("");
for(int i=0; i<arr.length; i++) {
if(arr[i].equals(strK)) {
answer = i+1;
break;
}
}
return answer;
}
}
다른 사람 코드
class Solution {
public int solution(int num, int k) {
return ("-" + num).indexOf(String.valueOf(k));
}
}
-
를 추가하여 인덱스를 1부터 카운트하고, 숫자에 문자열을 더하면서 자동으로 문자열로 변환시켜주면서 indexOf()
함수를 통해 주어진 k
와 같은 인덱스를 찾음
class Solution {
public int solution(int num, int k) {
String numStr = String.valueOf(num);
String kStr = String.valueOf(k);
int answer = numStr.indexOf(kStr);
return answer < 0 ? -1 : answer + 1 ;
}
}
느낀 점
주어진 int들을 문자열로 변환한 후 split()
함수를 사용하여 num을 문자열로 바꾼 것을 배열로 바꿔준다. 그리고 그 배열을 돌며 k를 문자열로 바꾼 값과 같은 값이 나오면 그 인덱스가 return되도록 한다. 단, 이 때 반복문을 i=0부터 돌렸으므로 1을 더해줘야 한다.
다른 사람 코드에서는 한 줄로 해결할 수 있는 획기적인 방법도 존재했고, 굳이 split()
함수를 사용하여 반복문을 돌려주지 않아도, indexOf()
함수를 이용하여 문제를 해결할 수 있었다!