반응형

 

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

 

 

 

** Javascript

 

function solution(numbers) {
    let answer = [];
    for (var i = 0; i < numbers.length; i++) {
        for (var j = 0; j < numbers.length; j++) {
            if (i !== j) {
                answer.push(numbers[i] + numbers[j]);
            }
        }
    }   
    return [ ...new Set(answer)].sort((a, b) => a - b);
}

 

 

 

** Python

 

def solution(numbers):
    answer = []
    for i in range(len(numbers)):
        for j in range(len(numbers)):
            if not i == j:
                answer.append(numbers[i] + numbers[j])
    return sorted(list(set(answer)))

 

 

** Java

 

import java.util.*;
class Solution {
    public Integer[] solution(int[] numbers) {
        Set<Integer> answer = new HashSet<Integer>();
        for (int i = 0; i < numbers.length; i++) {
            for (int j = 0; j < numbers.length; j++) {
                if (i != j) answer.add(numbers[i] + numbers[j]);
            }
        }
        Integer[] arr = answer.toArray(new Integer[0]);
        Arrays.sort(arr);
        return arr;
    }
}

 

나는 리턴타입을 Integer로 바꿨는데 그냥 ArrayList로 바꿔도 되나 보다.

 

 

추천 많이 받은 풀이 투톱

 

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;

class Solution {
    public static ArrayList<Integer> solution(int[] numbers) {
        ArrayList<Integer> answer = new ArrayList<>();
        HashSet<Integer> set = new HashSet<>();

        for (int i = 0; i < numbers.length - 1; i++) {
            for (int j = i + 1; j < numbers.length; j++) {
                set.add(numbers[i] + numbers[j]);
            }
        }

        Iterator<Integer> iter = set.iterator();
        while(iter.hasNext()) {
            answer.add(iter.next());
        }

        Collections.sort(answer);
        return answer;
    }
}

 

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

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

        for(int i=0; i<numbers.length; i++) {
            for(int j=i+1; j<numbers.length; j++) {
                set.add(numbers[i] + numbers[j]);
            }
        }

        return set.stream().sorted().mapToInt(Integer::intValue).toArray();
    }
}

 

풀이 댓글에서 조언도 있었다. 

 

HashSet이 아닌 TreeSet을 사용하면 add하면서 정렬도 같이 됩니당
반응형

+ Recent posts