문제 설명

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

제한사항

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

입출력 예

numkresult
2918313
23244344
1234567-1

입출력 예 설명

  • 29183에서 1은 3번째에 있습니다.
  • 232443에서 4는 4번째에 처음 등장합니다.
  • 123456에 7은 없으므로 -1을 return 합니다.

풀이코드

class Solution {
    public int solution(int num, int k) {
        int answer = -1; // 초기값을 -1로 설정

        String str = Integer.toString(num);
        String[] arr = str.split("");

        for (int i = 0; i < arr.length; i++) {
            if (arr[i].equals(Integer.toString(k))) {
                answer = i + 1; // 정답을 찾았을 때 answer 값을 업데이트하고 루프를 빠져나감
                break;
            }
        }

        return answer;
    }
}

✏️ 풀이방법

  1. 정수 num을 문자열로 변환하여 각 자리수를 문자열 배열로 나눔
  2. for문으로 k와 일치하는지 확인
  3. 만약 for문을 빠져나오지 않고 끝까지 숫자 k를 찾지 못했다면 -1 반환
    answer 값을 -1로 기본 설정하여 찾지 못했을 경우 -1 반환하도록 함

다른 풀이코드

class Solution {
    public int solution(int num, int k) {
        return ("-" + num).indexOf(String.valueOf(k));
    }
}
class Solution {
    public int solution(int num, int k) {
        int n = String.valueOf(num).indexOf(String.valueOf(k));
        return n==-1?-1:n+1;
    }
}
class Solution {
    public int solution(int num, int k) {
        String s = String.valueOf(num);

        for(int i = 0; i < s.length(); i++){
            if(s.charAt(i) - '0' == k){
                return i + 1;
            }
        }
        return -1;
    }
}

String.valueOf()

: 객체를 문자열로 변환 하는 데 사용
입력값으로 숫자, 문자, 불리언, 문자열 및 기타 객체 가능

indexOf()

: 특정문자 또는 문자열의 인덱스 리턴 ➡️ 문자열 앞쪽(첫번째 인덱스)부터 탐색, 탐색할 내용이 존재하지 않으면 -1 리턴

0개의 댓글