JAVA

int 와 long

응디 2022. 12. 27. 17:49

코딩 테스트를 하다보면 코드 문법상에는 문제가 없어 보이지만 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