본문 바로가기

알고리즘 문제풀이(JAVA)

알고리즘문제풀이-크기가 작은 부분문자열(JAVA)

 숫자로 이루어진 문자열 t와 p가 주어질 때,t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는

수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요.
예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다.
이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다

public class Solution67 {
    /**
     * 주어진 문자열 t에서 부분 문자열 p와 숫자를 비교하여 p보다 작거나 같은 경우의 수를 반환하는 메서드.
     *
     * @param t 비교 대상이 되는 문자열
     * @param p 비교할 부분 문자열
     * @return p보다 작거나 같은 경우의 수
     */
    public int solution(String t, String p) {
        // 결과값 초기화
        int answer = 0;
        
        // 부분 문자열 p의 길이
        int pLength = p.length();

        // 주어진 문자열 t를 순회
        for (int i = 0; i <= t.length() - pLength; i++) {
            // t에서 현재 위치에서 pLength만큼의 부분 문자열 추출
            String substring = t.substring(i, i + pLength);
            
            // 추출한 부분 문자열을 숫자로 변환하여 비교
            if (Long.parseLong(substring) <= Long.parseLong(p)) {
                // p보다 작거나 같으면 결과값 증가
                answer++;
            }
        }

        // 최종 결과 반환
        return answer;
    }
}

 

이 코드는 두 개의 문자열 tp가 주어질 때, t에서 추출한 부분 문자열이 p보다 작거나 같은 숫자인 경우의 수를 계산하는 Java 클래스입니다. 주어진 문자열 t를 순회하면서 모든 가능한 부분 문자열을 확인하고, 각 부분 문자열을 숫자로 변환하여 p와 비교합니다. 만약 숫자로 변환한 부분 문자열이 p보다 작거나 같으면 결과값을 증가시킵니다.