숫자 찾기

nacSeo (낙서)·2024년 4월 28일
0

프로그래머스

목록 보기
153/169

문제 설명

정수 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()함수를 이용하여 문제를 해결할 수 있었다!

profile
백엔드 개발자 김창하입니다 🙇‍♂️

0개의 댓글