숫자 찾기
정수 num과 k가 매개변수로 주어질 때, num을 이루는 숫자 중에 k가 있으면 num의 그 숫자가 있는 자리 수를 return하고 없으면 -1을 return 하도록 solution 함수를 완성해보세요.
0 < num < 1,000,000
0 ≤ k < 10
num에 k가 여러 개 있으면 가장 처음 나타나는 자리를 return 합니다.
⌛ 시간 0.02ms ~ 0.03ms
str1.indexOf(str2) : str1에 str2가 등장하는 첫 번째 인덱스를 반환한다.
※ 없을 경우 -1을 반환
정수를 문자열로 변환 (String.valueOf())한 후 indexOf()를 사용해 k가 존재하는 위치를 result에 저장해준다.
이후 만약 저장한 값이 -1일 경우 -1을 return 하고 아닐 경우 result에 1을 더해 return 준다.
→ 1을 더해주는 이유 : indexOf() 는 위치를 0부터 시작하지만 문제의 조건은 첫 번째 위치의 값이 1부터 시작하기 때문
public int solution(int num, int k) {
int result = String.valueOf(num).indexOf(String.valueOf(k));
return result == -1? -1 : result+1;
}
위에 방식에서 시작 인덱스를 0이 아닌 1로 하기 위해 삼항연산자를 이용해 값에 +1 을 해주었다면
이 코드에서는 "=" 을 이용해 0번 인덱스에 무의미한 문자열을 넣어 우리가 찾는 값을 1부터 찾을 수 있도록 진행하였다.
직접 작성한 코드는 아니지만 생각의 전환을 할 수 있는 코드라 생각해 참고용으로 작성해보았다.
public int solution1(int num, int k) {
return ("-" + num).indexOf(String.valueOf(k));
}