Jam's story
[프로그래머스] 크기가 작은 부분문자열 java 본문
class Solution {
//t를 p의 갯수로 자른 후, p보다 작거나 같은 수는 몇갠지
public static int[] splitarr;
public static int len;
public static int arrlen;
public static int solution(String t, String p) {
int answer = 0;
if((p.length()>=1 || p.length()<=18 ) && t.length()<=10000) {
len=p.length();
arrlen= t.length()-len+1;
splitarr=new int[arrlen];
int endIdx=len;
for (int i = 0; i < splitarr.length; i++) {
splitarr[i]=Integer.parseInt(t.substring(i,endIdx));
endIdx++;
//System.out.println(splitarr[i]);
if(splitarr[i]<=Integer.parseInt(p)) answer++;
}
}
// System.out.println("답은: "+answer);
return answer;
}
}
이렇게 풀었더니 테스트케이스는 통과해도 제출에서 런타임에러 발생
int 형으로 풀면 에러가 난다고 한다.
이유가 뭐지 ?
long으로 바꿨더니 제출 통과
public static long[] splitarr;
public static int len;
public static int arrlen;
public static int solution(String t, String p) {
int answer = 0;
if((p.length()>=1 || p.length()<=18 ) && t.length()<=10000) {
len=p.length();
arrlen= t.length()-len+1;
splitarr=new long[arrlen];
int endIdx=len;
for (int i = 0; i < splitarr.length; i++) {
splitarr[i]=Long.parseLong(t.substring(i,endIdx));
endIdx++;
//System.out.println(splitarr[i]);
if(splitarr[i]<=Long.parseLong(p)) answer++;
}
}
// System.out.println("답은: "+answer);
return answer;
}
다른 사람 풀이를 보니까 엄청 간단하게 풀었다
나처럼 변수선언없이 바로 for문에서 함수사용으로 길이 알아내기
class Solution {
public int solution(String t, String p) {
int answer = 0;
for (int i = 0; i < t.length()-p.length()+1; i++){
if (Long.parseLong(t.substring(i,i+p.length())) <= Long.parseLong(p)){
answer++;
}
}
return answer;
}
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 문자열 나누기 java (0) | 2022.12.27 |
---|---|
[프로그래머스] 자릿수 더하기 java (0) | 2022.12.26 |
[프로그래머스] 제곱수판별하기 java (0) | 2022.12.24 |
[프로그래머스] 가장 가까운 같은 글자 java (0) | 2022.12.21 |
[프로그래머스] 세균증식 JAVA (0) | 2022.12.21 |
Comments