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

Mixer·2023년 11월 21일

문제 설명
함수 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개의 댓글