[코딩테스트] 프로그래머스 - x만큼 간격이 있는 n개의 숫자(JAVA)
문제 설명
함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
제한사항
- x는 -10000000 이상, 10000000 이하인 정수입니다.
- n은 1000 이하인 자연수입니다.
풀이
- IntStream.range()를 이용하여 풀었습니다.
- mapToLong을 이용하면 int -> long으로 간편하게 return 할 수 있습니다.
- int 곱셈의 결과가 범위를 넘으면 오버플로가 발생합니다.
- long casting으로 해결 가능!!
public long[] solution(int x, int n) {
return IntStream.range(0, n)
.mapToLong(i -> (long) x * (i + 1))
.toArray();
}
검증 및 보강 — 2026-10-24
문제는 long[] 결과를 요구합니다. (long) (x * (i + 1))은 이미 int에서 오버플로한 뒤 변환하므로 잘못된 접근입니다. (long) x * (i + 1)처럼 곱셈 전에 변환합니다. x=-4,n=2 → [-4,-8], x=0,n=3 → [0,0,0], x=10,000,000,n=1000의 마지막 값 10,000,000,000을 확인하세요. 시간과 반환 배열 공간은 O(n)입니다.
메서드 예제는 Solution 클래스 내부에 넣는 형태이며, 사용한 클래스는 java.util.stream.IntStream입니다. 필요한 import를 클래스 선언 위에 추가하세요.
댓글