알고리즘
프로그래머스 - 크기가 작은 부분문자열
Heidong
2023. 1. 24. 22:10
반응형
내 풀이
public class P_45 {
public static int solution(String t, String p) {
int answer = 0;
int t_len = t.length();
Long p_len = (long)p.length();
/*
* 공백 문자열을 찾기 위해서는 상위 문자열 - 하위 문자열 갯수를 빼고 1을 더해야 함.
* 처음 시작 위치와 마지막 위치 때문에 1을 더해야 함.
* i <= t_len - p_len 도 가능
* p의 최대 자릿수는 18까지 가능 하지만 int형의 최대 자릿수는 -2147483648 ~ 2147483647로 10자리
*/
for(int i=0; i<t_len - p_len + 1; i++) {
if(Long.parseLong(t.substring(i, (int) (i+p_len))) <= Long.parseLong(p)) {
answer++;
}
}
return answer;
}
public static void main(String[] args) {
// 크기가 작은 부분문자열
String t = "1221351118575141528544";
String p = "12511";
int ans = solution(t, p);
System.out.println(ans);
}
}
문제 자체는 쉬움 문자열 자르기 함수로 해당 인덱스 만큼 빼가면서 계산하고 그 값이 p보다 작거나 같은지만 체크해서 카운팅 해주면 됨.
어려웠던 부분은 반복문의 횟수 조건 이였는데 t의 길이 - p의 길이를 하게 되면 안되고 +1을 해줘야 했던점
혹은 +1이 아니라 조건에 같음 조건을 넣어줘서 반복문을 한번 더 돌게 해야했던 점
이게 공백 문자열 크기를 구하는 방법이다.
그리고 p의 최대 자릿수는 18까지 가능 하지만 int형의 최대 자릿수는 10자리이기 때문에 Long 타입의 형변환이 필요하다.
반응형