본문 바로가기

코딩 테스트

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

728x90

문제


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

 

 

-  출력 예시  -

정답 코드


<  내 정답 코드  >

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

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

 

<  타인 답변 코드  >

import java.util.*;
class Solution {
    public static long[] solution(int x, int n) {
        long[] answer = new long[n];
        answer[0] = x;

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

        return answer;

    }
}

이것을 주의하자!


-  매개변수 x가 처음엔 int형으로 들어오지만, 이후 int형의 범위를 넘어버릴 수 있다. 따라서 long형으로 형변환 해주는 것이 필요하다!

 

-  x의 값이 한 번씩 더해진다는 관점에서 for문의 알고리즘을 적절히 작성하는 것이 포인트!

 

- 그러나 타인의 정답 코드에서 본 '바로 직전의 값' + 'x값'이라는 규칙도 매우 깔끔하다..!