프로그래머스_크기가 다른 부분 문자열 문제
String 형식으로 된 숫자의 나열이 주어졌을 때, 주어진 p 문자열의 길이만큼 부분 문자열을 찾고 그 문자열 중, p 보다 작거나 같은 수를 찾아낸다.
해결방법
전체 리스트에서 슬라이싱한 만큼 빼주었을 때, 부분 문자열이몇개가 나오는지 규칙을 파악하였다.
찾은 규칙 : p의 길이에서 t의 길이를 뺀 것에 + 1 을 해주면 부분 문자열의 갯수가 나온다.
잘려서 나온 값들을 저장할 수 있는 공간을 만들고 그 공간에 하나씩 저장
공간의 크기를 리턴해준다.
** 주의할 것, 반환되는 타입 !
문자열의 크기가 클 수 있기 때문에 long으로 반환해줘야한다.
코드
import java.util.*;
class Solution {
public int solution(String t, String p) {
List<Long> list = new ArrayList<>();
// 부분문자열의 갯수 (t.length() - p.length() + 1)
for(int i = 0 ; i < (t.length() - p.length() + 1) ; i++){
Long num1 = Long.parseLong(t.substring(i, i+p.length()));
if(num1 <= Long.parseLong(p)){
list.add(num1);
}
}
return list.size();
}
}
ArrayList 를 우선 만들어서 정답이 들어갈 수 있는 공간을 만들어 주었다.
그리고 찾은 규칙을 적용한 for 문을 돌렸고 안에 if 문을 통해서 ArrayList 에 들어갈 수 있는 규칙을 한번 더 걸어주었다.