티스토리 뷰

프로그래머스 68644번 - 두 개 뽑아서 더하기

프로그래머스 68644번 - https://programmers.co.kr/learn/courses/30/lessons/68644

 

요구사항

1. 정수 배열 numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 구한다.

2. 구한 수를 모두 오름차순으로 정렬하여 반환한다.

 

요구사항 분석 및  풀이과정

1. 서로 다른 인덱스를 모두 순회하여 두 인덱스에 있는 두 개의 수 합을 Set 자료구조를 이용하여 저장합니다. Set 자료구조를 사용하는 이유는 중복된 합을 한 번만 저장하기 위함입니다.

2. Set 객체를 int 배열로 바꾼 후 정렬 후 반환한다.

 

정렬이 필요하기 때문에 처음부터 HashSet 대신 TreeSet을 사용하면 추가로 정렬을 해주지 않아도 됩니다.

 

소스코드 작성

import java.util.Set;
import java.util.HashSet;

class Solution {
    
    public int[] solution(int[] numbers) {
        Set<Integer> result = new HashSet<>();

        for (int i = 0; i < numbers.length - 1; i++) {
            for (int j = i + 1; j < numbers.length; j++) {
                result.add(numbers[i] + numbers[j]);
            }
        }
        
        return result.stream().mapToInt(Integer::intValue).sorted().toArray();
    }
}

 

결과

 

소스코드 깃허브 주소

링크

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
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
글 보관함