프로그래머스

[프로그래머스] 두 개 뽑아서 더하기 (JAVA)

코 밑 2024. 3. 27. 03:16
Contents

https://school.programmers.co.kr/learn/courses/30/lessons/68644

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

간단한 문제다

주어진 배열에 있는 숫자들을 두개씩 골라 더해서

나올 수 있는 모든 경우를 반환하라고 한다.

 

단 중복 제외, 오름차순 정렬해서

 

코드부터 보시죵

 

import java.util.*;

class Solution { // 두개 뽑아서 더하기
	public int[] solution(int[] numbers) {
		Set<Integer> set = new HashSet<>(); // set에다가 더한 수 넣기 중복값x

		for (int i = 0; i < numbers.length; i++) { // i는 첫번째 수
			for (int j = i + 1; j < numbers.length; j++) { // j는 두번째 수
				set.add(numbers[i] + numbers[j]);
			}
		}

		ArrayList<Integer> list = new ArrayList<>(set); // 정렬을 위해 이사함 set에는 배열 순서가 없기 때문
		Collections.sort(list); // 정렬

		int[] answer = new int[list.size()]; // answer에 넣어주기
		for (int i = 0; i < list.size(); i++) {
			answer[i] += list.get(i);
		}

		return answer;
	}
}

 

중복 값을 피하기 위해 set을 이용했다.

set은 인덱스가 없음 즉 중복 허용x라는 특징을 가지고 있다.

자세한 설명은 다음 포스팅에 올리도록 하겠습니당

 

  1. 이중 for문을 이용해 set에다가 모든 경우를 넣어주었다
  2. set은 인덱스가 없기 때문에 정렬이 불가능하다 그래서 ArrayList를 선언해 모든 값들을 이사시켜주었다
  3. 정렬 후 int형 배열인 answer에 넣어주었다

 

 

2Z