코딩 테스트를 하다보면 코드 문법상에는 문제가 없어 보이지만 error 가 나는 경우가 있다.
아래 코드가 그와 같은 경우이다.
숫자로 이루어진 문자열 t와 p 가 주어질 때 … 프로그래머스의 크기가 작은 부분 문자열 문제를 참고하시길 바람
< 제한사항 >
- 1 ≤ p의 길이 ≤ 18
- p의 길이 ≤ t의 길이 ≤ 10,000
- t와 p는 숫자로만 이루어진 문자열, 0으로 시작 안함
처음엔 문제를 읽고 전부 int 타입으로 코딩을 해서 제출 했다. → 몇몇 테스트에서 RuntimeError 발생!
이유를 찾는데 한참이 걸렸다…
제한사항의 1번에 p가 1~18까지가 아닌 p의 길이가 18까지 였다.
int 는 최대 10자리 까지만 사용이 가능하다.. 따라서 p를 파싱하는 변수는 모두 long 으로 갔어야 한다.
num 과 strToInt 변수만 long 타입으로 바꿔주었더니 무사히 제출 되었다.
이러한 작아 보이는 실수가 늘 문제를 만드는것 같다.
무작정 코딩이 아니라 생각하는 코딩을 하자ㅠ
import java.util.*;
class Solution {
public int solution(String t, String p) {
int answer = 0;
int leng = p.length();
long num = Long.parseLong(p);
for(int i=0; i<t.length(); i++){
if((i+leng) <= t.length()){
long strToint = Long.parseLong(t.substring(i, (i+leng)));
if(strToint <= num){answer++;}
}
}
return answer;
}
}
'JAVA' 카테고리의 다른 글
동작 파라미터화 코드 전달하기(2) (0) | 2023.01.19 |
---|---|
동작 파라미터화 코드 전달하기(1) (0) | 2023.01.10 |
BDD 스타일 Mockito API (0) | 2022.12.26 |
Mock 객체 확인 (0) | 2022.12.15 |
Mock 객체 stubbing (0) | 2022.12.15 |