숫자 찾기 Lv. 0

박영준·2023년 6월 2일
0

코딩테스트

목록 보기
203/300
class Solution {
    public int solution(int num, int k) {
        int answer = 0;
        return answer;
    }
}


해결법

방법 1

class Solution {
    public int solution(int num, int k) {
        int answer = -1;
        String str = num + "";      		// int -> string 문자열
        String[] strArr = str.split("");      // string -> 하나씩 배열에 담기
        
        for (int i = 0; i < strArr.length; i++) {
            if (strArr[i].equals(String.valueOf(k))) {
                answer = i + 1;
                break;
            }
        }
        
        return answer;
    }
}
  • int -> string 문자열 -> 하나씩 배열에 담기

    • String strArr[] = String.valueOf(num).split("") 이렇게 한 줄에 작성도 가능하다.
  • strArr[i].equals(String.valueOf(k))

    • strArr[i] 가 배열에 담긴 문자이므로, k 또한 문자로 만들어서 비교해야 한다.

방법 2

class Solution {
    public int solution(int num, int k) {
        String strNum = num + "";
        String strK = k + "";
        
        int answer = strNum.indexOf(strK);
        
        return answer > -1? ++answer : answer;
    }
}
  • indexOf() : 처음으로 등장하는 위치의 인덱스를 반환

    참고: String 클래스

  • answer > -1? ++answer : answer

    • false 일 경우, -1 반환
    • true 일 경우, 일단 answer는 1부터 시작하므로 ++ 를 먼저 준다.

방법 3

class Solution {
    public int solution(int num, int k) {
        String numStr = String.valueOf(num);		// 숫자 -> 문자열
        String kStr = String.valueOf(k);		// 숫자 -> 문자열

        int answer = numStr.indexOf(kStr);		// numStr 안에서 kStr 찾기
        return answer < 0 ? -1 : answer + 1 ;		// indexOf()는 
    }
}
  • indexOf()

    • 인덱스를 반환하므로 true 일 경우, +1 해주어야 함
    • 원하는 문자를 찾지 못했을 경우 -1을 반환하므로 answer < 0 이라는 조건식을 사용함

    참고: String 클래스


숫자 찾기 Lv. 0

profile
개발자로 거듭나기!

0개의 댓글