코테 - x만큼 간격이 있는 n개의 숫자

Mixer·2023년 11월 21일
0

문제 설명
함수 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]

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

풀이

a. 입력받은 n은 개수이니 배열의 크기로 설정한다
b. for문을 이용해 배열의 자릿수만큼 반복한다 (i < n 의 조건문은 i < answer.length; 와 동일하다)
c. answer 배열의 0번 인덱스부터 (i + 1) * x 를 대입해주면, 출력 결과처럼 입력받은 x 만큼 증가하여 출력된다.

(i + 1) * x 앞에 (long) 형으로 형 변환을 해주어야한다.
이유는 제한 조건에서 x 는 -10,000,000 이상 10,000,000 이하인 정수라하여
n은 1,000 이하인 자연수이다.
만약 x의 입력값이 10,000,000 이고 n의 입력값이 1,000일 때
최대 출력값은 10,000,000,000 이 되며 int형이 표현할 수 있는 숫자의 범위를 넘기 때문에 long 형으로 형 변환이 필요하다.

다른사람들의 풀이

import java.util.*;
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;

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


      return answer;
  }
}
profile
Minthug'life

0개의 댓글