거누의 개발노트

[Java] 프로그래머스 - level1 - x만큼 간격이 있는 n개의 숫자 본문

코딩테스트

[Java] 프로그래머스 - level1 - x만큼 간격이 있는 n개의 숫자

Gogozzi 2022. 3. 2. 09:08
반응형
문제 설명

함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.

제한 조건

  • x는 -10000000 이상, 10000000 이하인 정수입니다.
  • n은 1000 이하인 자연수입니다.

처음에 푼 코드

public long[] solution(int x, int n ){
    long[] answer = new long[n];

    for (int i = 0; i < n; i++) {
        answer[i] = x * i + x;
    }

    return answer;
}

결과

※ 테스트 13, 테스트 14를 실패하게 되었다.

 

한참 고민하다가 int 여서 범위에 벗어나는 걸까? 해서 테스트 해봤다 제한조건에 가장 큰 경우

x가 10000000, n이 1000 인 경우를 테스트 해봤다.

마지막 숫자가 1,410,065,408 가 나왔다.

int의 범위는 -2,147,483,648 ~ 2,147,483,647 이다.

범위 안에 숫자가 들어간다...???

 

고민해보다가 사람들이 질문한 내용을 구경해봤다.

long 타입으로 변환 해주니 정상으로 13, 14 테스트를 통과했다고 한다.

public long[] solution(int x, int n ){
        long[] answer = new long[n];

        for (int i = 0; i < n; i++) {
            answer[i] = (long)x * i + x;
        }

        return answer;
    }

쓰읍... 통과 되었다.

 

다시 생각해보니, 1000만 * 1000 은 100억이라는 숫자가 된다.

IDE에서 테스트 해보니 더이상 숫자를 표현못하고 짤렸던 것 같다.

너무 IDE를 믿고 테스트를 했다...

반응형
Comments