PS/프로그래머스

프로그래머스 x만큼 간격이 있는 n개의 숫자 JAVA

_룰루 2023. 3. 13. 16:56

 

아주 쉬워서 당당하게 풀었더니 fail

//Fail

class Solution {
    public long[] solution(int x, int n) {
        long[] answer = {};
        answer = new long[n];
        answer[0] = x;
        for(int i=1; i<n; i++){
            answer[i] = x+(i*x);
        }
        return answer;
    }
}

 

테스트 케이스 13,14가 계속 fail이 떴는데 자료형이 달라서 오버플로우가 나서 fail이었던 것이다.

 

해결방법은 2가지

1. 따로 변수를 만들어서 x를 long 타입으로 바꿔주거나

2. 그게 귀찮으면 그냥 이전 배열에 있는 값을 가져와서 더하기

 

//1번
class Solution {
    public long[] solution(int x, int n) {
        long[] answer = {};
        answer = new long[n];
        long num = (long)x;
        for(int i=0; i<n; i++){
            answer[i] = num;
            num +=x;
        }
        return answer;
    }
}


//2번
class Solution {
    public long[] solution(int x, int n) {
        long[] answer = {};
        answer = new long[n];
        answer[0] = x;
        for(int i=1; i<n; i++){
            answer[i] = answer[i-1]+x;
        }
        return answer;
    }
}

 

자료형을 잘 보자

반응형