Back-end/Algorithm

[프로그래머스][코딩테스트 연습] x만큼 간격이 있는 n개의 숫자

Nellie Kim 2022. 11. 19. 09:48
728x90
  • x만큼 간격이 있는 n개의 숫자
문제 설명

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

제한 조건

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

입출력 예

xnanswer
2 5 [2,4,6,8,10]
4 3 [4,8,12]
-4 2 [-4, -8]
class Solution {
    public long[] solution(int x, int n) {
        long[] answer = {};
		
        return answer;
    }
}

 

내 답변

class Solution {
	public static long[] solution(int x, int n) {
        long[] answer = {};
        
		for(int i = 0; i < n; i++) {
                for(int j = 1; j <= n; j++) {
                    answer[i] = x * j;
                }
        }
        return answer;
    }
	
    public static void main(String[] args) {
    	System.out.println(Arrays.toString(solution(2,5)));
	}
}
출력 : [10,10,10,10,10]

-> 실수 : 

1. 배열의 길이를 안주고 시작함-> java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0에러남

2. 반복문을 이상하게 썼음;;

 

 

 

정답

class Solution {
	public static long[] solution(int x, int n) {
		long[] answer = new long[n];
		
		for(int i = 0; i < n; i++) {
        	answer[i] = x * (i + 1);
        }
        return answer;
    }
	
    public static void main(String[] args) {
    	System.out.println(Arrays.toString(solution(2,5)));
	}
}

 

 

다른사람 풀이

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

    }
}

전 인덱스에 x 붙이기!!! 직관적이다!!