본문 바로가기
알고리즘/프로그래머스

[프로그래머스 연습문제] C# x만큼 간격이 있는 n개의 숫자

by 개발하는 디토 2022. 9. 26.

문제 설명

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

제한 조건

  • x는 -10000000 이상, 10000000 이하인 정수입니다.
  • n은 1000 이하인 자연수입니다.

입출력 예

x n answer
2 5 [2,4,6,8,10]
4 3 [4,8,12]
-4 2 [-4, -8]

 

틀린 답안

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

이러면 테스트 케이스 13, 14 번에서 오류가 난다.

이유는 int인 x가 maximum 값으로 들어오면 i가 들어오면서 음수로 바뀌어버리기 때문에 이상한 답이 나온다. 따라서 이러한 극한적인 경우까지 커버하기 위해서는 x를 long으로 치환해줄 필요가 있다.

 

정답

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

푸는 방법이 이것만 있는 건 아니다. 더하기로 풀 수도 있는데 예제 숫자를 보니까 결국에는 곱셈으로 처리 가능할 것 같아서 나는 곱셈으로 했다.

 

데이터 타입의 중요성을 깨닫는 문제였다.... 더 신경 써야지.

댓글