공부/프로그래머스

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

해니0 2024. 8. 3. 08:00

문제

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

class Solution {
    public long[] solution(int x, int n) {
        long[] answer = {};
        return answer;
    }
}

제한사항

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

 

입출력 예

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

문제 풀이

분석

x를 초기값으로 한 후 x만큼 증가한 정수를 리스트에 n개만큼 담아주기

 

 

내 소스코드

class Solution {
    public long[] solution(int x, int n) {
        long[] answer = new long[n];
        long num = x;

        for(int i=0; i<answer.length; i++){
            answer[i] = num;
            num += x;
        }

        return answer;
    }
}

 

다른 예시 1

- num 변수를 추가로 선언하지 않고 배열 초기값 선언 후 이전 값을 이용해서 for문으로 저장

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;

    }
}

 

다른 예시 2

- Stream 사용해서 깔끔하게 한 줄로 처리 (iterate()는 연산을 반복적으로 수행할 때 사용되는 메서드)

import java.util.stream.LongStream;
class Solution {
  public long[] solution(int x, int n) {
      return LongStream.iterate(x, i->i+x).limit(n).toArray();
  }
}

 

추가로 고민 할 부분

배열과 ArrayList 차이

배열

long[] array = new long[5]

크기(길이)는 변경할 수 없음 - 이를 정적 할당(static allocation)

 

ArrayList

List<Number> arrayList = new ArrayList<>();

리스트의 길이가 가변적 - 동적 할당(dynamic allocation)

 

타입 고려하기

- long, int

 


Lv.1  / Java / 연습문제

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges