코딩 테스트/Java

[프로그래머스]Level 1 : x만큼 간격이 있는 n개의 숫자(JAVA)

반응형
 x만큼 간격이 있는 n개의 숫자

 

문제 설명

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

제한 조건
  • x는 -10000000 이상, 10000000 이하인 정수입니다.
  • n은 1000 이하인 자연수입니다.
입출력 예
x n answer
2 5 [2,4,6,8,10]
4 3 [4,8,12]
-4 2 [-4, -8]
코드
class Solution {
    public long[] solution(long x, int n) {
        long[] answer = new long[n];
        
        if(n >= 1000) return answer;
        
        long temp = x;
        for(int i=0; i<answer.length; i++){
            answer[i] = x;
            x += temp;
        }
        return answer;
    }
}
해설

처음에 주어진대로 x를 int형으로 했는데, 케이스2개르 통과하지 못해서 계속 오류가 났다.
아무리 생각해도 코드상 문제가 없는데, 통과를 하지 못하길래 고민을 한 결과!!!

x값에 1000만이 들어오는경우 n값에 따라서 배열의 길이가 생성이 될때 x값은 x값만큼 증가를 하면서 배열의 다음 인덱스에 값이 들어가는 과정에서 int형 범위를 넘어가는 과정이 생기기 때문에  버퍼오버플로우가 발생한다. 그래서 x를 long형으로 바꿔주었다.

 

출처: 프로그래머스, https://programmers.co.kr/learn/courses/30/lessons/12954

반응형