본문 바로가기
Coding Test

230928 숫자 찾기 - Level 0

by mmm- 2023. 9. 28.

문제 설명

정수 num과 k가 매개변수로 주어질 때, num을 이루는 숫자 중에 k가 있으면 num의 그 숫자가 있는 자리 수를 return하고 없으면 -1을 return 하도록 solution 함수를 완성해보세요.
 

제한사항

  • 0 < num < 1,000,000
  • 0 ≤ k < 10
  • num에 k가 여러 개 있으면 가장 처음 나타나는 자리를 return 합니다.

 

입출력 예

 

입출력 설명

입출력 예 #1

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

입출력 예 #2

  • 232443에서 4는 4번째에 처음 등장합니다.

입출력 예 #3

  • 123456에 7은 없으므로 -1을 return 합니다.

코드

class Solution {
    public int solution(int num, int k) {
        int answer = 0;
        int index = (String.valueOf(num)).indexOf(k+'0');
        
        answer = (index == -1) ? index : (index + 1);
        
        return answer;
    }
}

 

풀이

num은 문자열로, k는 문자로 변환하여 indexOf로 num에 k가 맨 처음에 나오는 자리 수를 index에 저장하여 그 값이 -1이면 -1을 answer에 넣어주고 그렇지 않다면 index + 1을 answer에 넣어준다. 


다른 코드와 풀이

아래의 코드는 다른 사람들이 작성한 것들로, 내 코드와 비교, 참고하기 위해 가져왔다.

class Solution {
    public int solution(int num, int k) {
        return ("-" + num).indexOf(String.valueOf(k));
    }
}

 num과 k를 문자열로 변환하여 k가 num에 처음으로 등장하는 인덱스를 반환한다.
("-"을 추가해 문자열로 변환하는 동시에, 0부터 시작되는 인덱스가 1부터 시작하게끔 만들어줌

(-가 추가됨으로 0번째 인덱스는 -가 차지하게 되어 숫자만 봤을 때 인덱스가 1부터 시작한다는 의미))