[프로그래머스 / JAVA] Level 1 x만큼 간격이 있는 n개의 숫자 (12954)

⏰ 2021-12-18 (토) 21:56:29

screener
시리즈 모아보기
프로그래머스

63 / 78

Table of Contents

  • 1. x만큼 간격이 있는 n개의 숫자






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

랭크사용 언어
Level 1
JAVA

🔗 🔗 x만큼 간격이 있는 n개의 숫자

문제 설명

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

제한 사항

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

입출력 예

xnanswer
25{ 2, 4, 6, 8, 10 }
43{ 4, 8, 12 }
-42{ -4, -8 }

풀이

x만큼 간격을 가진 수를 n개 만큼 나열하여 배열로 반환한다. 다른건 문제가 없지만, 음수의 경우가 문제다.

음수의 경우 내림차순으로 정렬해야 한다.

ArrayList에 요소를 담은 후, 각 수의 절대값을 기준으로 오름차순으로 정렬하자. ArrayList를 스트림화하여 sorted() 메서드를 사용하되, 정렬 알고리즘을 오버라이딩한다. (o1, o2) -> (int) (Math.abs(o1) - Math.abs(o2))로 오버라이딩하면 된다. Math.abs() 메서드를 통해 각 수의 절대값을 추출할 수 있다.

코드

JAVA

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.util.ArrayList;

/**
 * x만큼 간격이 있는 n개의 숫자 클래스
 *
 * @author RWB
 * @since 2021.12.13 Mon 22:21:01
 */
class Solution
{
	/**
	 * 해답 반환 메서드
	 *
	 * @param x: [int] 간격
	 * @param n: [int] 갯수
	 *
	 * @return [long[]] 해답
	 */
	public long[] solution(int x, int n)
	{
		ArrayList<Long> list = new ArrayList<>();
		
		while (n != 0)
		{
			list.add((long) x * n);
			
			n--;
		}
		
		return list.stream().sorted((o1, o2) -> (int) (Math.abs(o1) - Math.abs(o2))).mapToLong(Long::longValue).toArray();
	}
}

🏷️ 태그
# 프로그래머스
# 알고리즘
# JAVA(자바)
# Level 1

읽어주셔서 고마워요!

도움이 되셨다면, 공감이나 댓글을 달아주시는 건 어떤가요?

블로그 운영에 큰 힘이 됩니다.

https://hits.seeyoufarm.com/api/count/incr/badge.svg?count_bg=%23484848&icon=react.svg&icon_color=dodgerblue&title=view&title_bg=%23242424&url=https%3A%2F%2Fblog.itcode.dev%2Fposts%2F2021%2F12%2F18%2Fprogrammers-a0063