[JAVA] [LEVEL1] 프로그래머스 - 크기가 작은 부분 문자열

반응형

프로그래머스 programmers Level1 크기가 작은 부분 문자열 - java 자바

[문제]

https://school.programmers.co.kr/learn/courses/30/lessons/147355

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

[풀이]

주어진 문자열  t  에서 문자열  p 와 길이가 같은 부분문자열 중에  p  수보다 작거나 같은 부분문자열의 횟수

간단한 문제이다. 문자열  t  를 문자열  p  의 길이만큼 잘라서 숫자비교하면 되는 문제이다.

중요한 포인트는 다음 제한사항에 있다.

  •  p  의 길이 ≤  t  의 길이 ≤ 10,000
  •  t   p  는 숫자로만 이루어진 문자열이며, 0으로 시작하지 않습니다.

즉,  t 길이가 10,000 이하이다. 숫자가 10,000 이하라는 것이 아니라 문자열의 길이가 10,000 이하라는 것이다. 숫자로만 이루어진 문자열이며, 숫자의 크기를 비교하기 위해 int 타입으로 타입변환하면 int 타입의 범위를 초과할 가능성을 가지고 있다. 따라서 int 타입이아닌 long 타입으로의 타입변환이 필요하다.

 

[java 코드]

public int solution(String t, String p) {
    int answer = 0;
    // p의 길이
    int pLength = p.length();
    for (int i = 0; i < t.length(); i++) {
        int endIdx = i + pLength;
        if (endIdx > t.length()) {
            break;
        } else {
            // t 의 길이 조건을 고려하면 Long
            if (Long.valueOf(t.substring(i, endIdx)) <= Long.valueOf(p)) {
                answer++;
            }
        }
    }
    return answer;
}

 

반응형