ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로그래머스 - 크기가 작은 부분문자열
    알고리즘 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

    댓글 0

Designed by Hyeok