-
프로그래머스 - 크기가 작은 부분문자열알고리즘 2023. 1. 24.반응형
내 풀이
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 타입의 형변환이 필요하다.
반응형'알고리즘' 카테고리의 다른 글
프로그래머스 - 둘만의 암호 (0) 2023.02.26 프로그래머스 - 문자열 나누기 (0) 2023.02.05 프로그래머스 - 콜라 문제 (0) 2022.11.04 프로그래머스 - 삼총사 (0) 2022.10.15 프로그래머스 - 체육복 (0) 2022.08.19 TAG