PS/Programmers

[Programmers] x만큼 간격이 있는 n개의 숫자

서현 SEOHYEON 2023. 3. 15. 11:24

📝 문제

https://school.programmers.co.kr/learn/courses/30/lessons/12954

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 주의

프로그래머스를 푼지 얼마되지 않아서 착각했던 점.

주어진 코드를 수정해도 된다. 나는 주어진 출력, 반환값만 제대로 맞추면 된다.

long[] answer = {};

처음 주어진 코드가 이렇게 작성되어 있었는데, 뒷 부분을 수정할 생각을 못하고 크기가 0인 배열에 값을 집어 넣으려 하고 있었다. (당연히 에러 터짐)

long[] answer = new long[n];

수정했더니 풀이가 가능했다.

 

 

🔑 풀이 과정

① x의 범위가 -(10^7) ~ + (10^7)

n은 1000 이하인 자연수.

x가 10^7이고 n이 1000일 경우에는 최댓값이 (10^7) * (10^3) = (10^10) 이므로, int 범위를 초과한다.

그러므로 배열은 long으로 선언해줘야 한다.

 

② 예시 1의 리스트를 표로 나타내면 다음과 같다.

x = 2, n = 5, answer = [2,4,6,8,10]

인덱스 0 1 2 3 4
2 4 6 8 10
  x answer[0] + x answer[1] + x answer[2] + x answer[3] + x

인덱스 0은 x의 값을 그대로 넣어주고,

인덱스 1부터 (n-1)까지는 인덱스-1의 값에 x를 더해준다.

 

 

 

🔓 답안

class Solution {
    public 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;
    }
}