| 문제 | 레벨 | 정답률 |
|---|---|---|
| 크기가 작은 부분 문자열 | Lv.1 | 76% |

public int solution(String t, String p) {
int answer = 0;
for(int i = 0; i<t.length()-p.length()+1; i++){
String str = "";
for(int j = i; j<i + p.length(); j++){
str += t.charAt(j);
}
try{
if(Integer.parseInt(str) <= Integer.parseInt(p)){
answer++;
}
}catch(Exception e){
}
}
return answer;
}
-> 일부 런타임 에러 발생
로직 상의 오류는 없어보이는데 런타임 에러가 발생해서 알아보니
경우에 따라 타입 오류가 발생할 수 있고, 혹은 타입으로 인해 원하는 결과가 나오지 않을 수도 있다는 것을 알게 되었다.
class Solution {
public int solution(String t, String p) {
int answer = 0;
long pp = Long.parseLong(p);
for(int i = 0; i<t.length()-p.length()+1; i++){
String str = t.substring(i, i+p.length());
try {
long num = Long.parseLong(str); // 부분 문자열을 long으로 변환
if (num <= pp) {
answer++;
}
} catch (NumberFormatException e) {
}
}
return answer;
}
}
-> 결과적으로 바뀐 점은 하나. int 타입을 long 타입으로 변환하였다.
로직 상에 오류가 없어보인다면 타입을 넓혀보자..