AngelPlayer`s Diary

링크

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

 

프로그래머스

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

programmers.co.kr

 

 

 

문제 해석

배열의 값 중 두 개 수를 뽑아 만들 수 있는 모든 수를 오름차순으로 담기

 

 

 

 

풀이 & 코드 해석

가장 단순한 방법은 이중for문을 이용해서 모든 경우의 수를 탐색하고, 결과로 나온 경우의 수를 set에 넣어서 중복을 제거하는 방법일 것입니다.

 

그리고 Set으로 나온 결과를 다시 Array로 변경하여 return하는 형태로 작성하였습니다.

 

 

 

코드

import java.io.*;
import java.util.*;

class Solution {
    public Integer[] solution(int[] numbers) {
        Integer[] answer = {};
        
        // set 생성
        TreeSet<Integer> set = new TreeSet<>();
        
        for(int i = 0; i < numbers.length - 1; i++) {
            for(int j = i + 1; j < numbers.length; j++) {
                set.add(numbers[i] + numbers[j]);
                
            }
        }
        
        // System.out.println(set);
        
        // set -> array
        answer = set.toArray(new Integer[0]);
        
        Arrays.sort(answer);
        
        return answer;
    }
}

원래 문제는 HashSet을 이용하여서 해결하였습니다.

 

다만 HashSet은 정렬이 이뤄지지 않으므로 별도의 sort 작업을 필요로 합니다.

 

 

대신 TreeSet을 이용하면 정렬된 sort가 나오기 때문에 별도의 sort 작업 없이도 결과를 도출할 수 있습니다.

 

 

 

 

발생한 문제 & 해결 방안

~~

 

 

 

 

 

 

 

해당 코드는 에디터가 코드 연습을 위해 직접 작성하였습니다.

혹시 오류가 있거나 더 좋은 코드 방향성을 아시는 분은 댓글로 남겨주시면 감사하겠습니다!

python source : https://github.com/ssh5212/conding-test-practice

java source : https://github.com/ssh5212/coding-test-java

공유하기

facebook twitter kakaoTalk kakaostory naver band