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;
}
}