diff --git a/programmers/크기가 작은 부분문자열/solution.java b/programmers/크기가 작은 부분문자열/solution.java index 5e9ed24..3371f61 100644 --- a/programmers/크기가 작은 부분문자열/solution.java +++ b/programmers/크기가 작은 부분문자열/solution.java @@ -1,16 +1,16 @@ // [문제 링크]: https://school.programmers.co.kr/learn/courses/30/lessons/147355 -import java.lang.StringBuilder; +import java.util.stream.LongStream; + class Solution { public int solution(String t, String p) { - StringBuilder sb = new StringBuilder(); - int answer = 0, len = p.length(); - long ip = Long.parseLong(p); - for(int a = 0; a < t.length()-len+1; a++){ - for(int b = a; b < a+len; b++) sb.append(t.charAt(b)); - if(Long.parseLong(sb.toString())<=ip) answer++; - sb.setLength(0); - } - return answer; + long targetNumber = Long.parseLong(p); + int targetNumberLength = p.length(); + + return (int) LongStream.range(0L, t.length() - targetNumberLength + 1L) + .mapToObj(i -> t.substring((int) i, (int) i + targetNumberLength)) + .mapToLong(Long::parseLong) + .filter(number -> number <= targetNumber) + .count(); } } \ No newline at end of file