[level 1] 크기가 작은 부분문자열 - 147355

SELOG·2024년 1월 6일
0

코딩테스트

목록 보기
36/48

문제 링크

성능 요약

메모리: 78.1 MB, 시간: 0.18 ms

구분

코딩테스트 연습 > 연습문제

채점결과

정확성: 100.0
합계: 100.0 / 100.0

제출 일자

2024년 1월 6일 17:52:5

문제 설명

숫자로 이루어진 문자열 tp가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요.

예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다.


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

입출력 예
t p result
"3141592" "271" 2
"500220839878" "7" 8
"10203" "15" 3

입출력 예 설명

입출력 예 #1
본문과 같습니다.

입출력 예 #2
p의 길이가 1이므로 t의 부분문자열은 "5", "0", 0", "2", "2", "0", "8", "3", "9", "8", "7", "8"이며 이중 7보다 작거나 같은 숫자는 "5", "0", "0", "2", "2", "0", "3", "7" 이렇게 8개가 있습니다.

입출력 예 #3
p의 길이가 2이므로 t의 부분문자열은 "10", "02", "20", "03"이며, 이중 15보다 작거나 같은 숫자는 "10", "02", "03" 이렇게 3개입니다. "02"와 "03"은 각각 2, 3에 해당한다는 점에 주의하세요



내 코드

  • 1차 코드 (런타임에러)

class Solution {
    public int solution(String t, String p) {
        int p_len = p.length();
        int p_integer = Integer.parseInt(p);
        
        int count = 0;
        for(int i = 0 ; i < t.length() - p_len + 1 ; i++){
            String temp_arr = t.substring(i, i + p_len);
            int temp_int = Integer.parseInt(temp_arr);
            if(p_integer >= temp_int) count++;
        }
        return count;
    }
}
  • 2차 코드 (성공)

class Solution {
    public int solution(String t, String p) {
        int p_len = p.length();
        long p_integer = Long.parseLong(p);
        
        int count = 0;
        for(int i = 0 ; i < t.length() - p_len + 1 ; i++){
            String temp_arr = t.substring(i, i + p_len);
            Long temp_int = Long.parseLong(temp_arr);
            if(p_integer >= temp_int) count++;
        }
        return count;
    }
}

Point

  • String => int 변환시 주의하기
  • int의 경우 32비트이므로 대부분의 경우 10자리 정도의 숫자까지
  • p의 문자열 길이는 최대 18자리이며, int형의 최댓값의 자릿수를 초과
  • 문자열의 길이로 인해 오버 프로우 될 수 있기때문에, 정수형으로 변환 시 long 타입으로 변환
profile
금융 IT 전문가가 될거야

0개의 댓글