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

febCho·2024년 6월 30일
0

코딩테스트

목록 보기
235/253
post-thumbnail

문제

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

- 제한사항

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

풀이

- 오답

이렇게 풀이하니 x가 0일 때 처리를 제대로 못해서인지 케이스 중 2개는 통과 실패했고 하나는 런타임 에러가 났다. 코드를 조금 더 간단히 만들면서도 x가 양수인지, 음수인지, 0인지 관계 없이 리스트를 리턴할 수 있도록 만들고자 했다.

class Solution {
    public long[] solution(int x, int n) {
        long[] answer = new long[n];
        int idx = 0;
        
        if(x > 0){
            for(int i=x; i<=x*n; i+=x){
                answer[idx++] = i;
            }
        }else{
            for(int i=x; i>=x*n; i+=x){
                answer[idx++] = i;
            }
        }
        
        return answer;
    }
}

- 정답

인덱스 변수를 따로 썼던 오답과 달리, iterator인 i를 그대로 인덱스 값에 사용하기로 했다. 그렇게 하면 x를 n과 곱해서 전체 범위의 값을 복잡하게 구할 필요 없이 n-1개까지 배열에 담을 수 있게 범위가 정해진다.

그 다음, answer[i]에 값을 대입해줄 때, x에 iterator를 곱해 x만큼 값이 증가하게 한다. 중요한 건 0부터 시작하는 iterator의 값에 +1을 해 보정을 해주어야 한다는 점이다.

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

결과

profile
Done is better than perfect.

0개의 댓글