-
프로그래머스 - 두 개 뽑아서 더하기알고리즘 2022. 7. 11.반응형
내 풀이
import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;public class P_37 {public int[] solution(int[] numbers) {ArrayList<Integer> list = new ArrayList<>();int check = 0;for(int i=0; i<numbers.length-1; i++) {for(int j=i+1; j<numbers.length; j++) {check = numbers[i] + numbers[j];if(! list.contains(check)) {list.add(check);}}}Collections.sort(list);int[] answer = list.stream().mapToInt(Integer::intValue).toArray();return answer;}public static void main(String[] args) {// 두 개 뽑아서 더하기P_37 p = new P_37();int[] x = {2,1,3,4,1};System.out.println(Arrays.toString(p.solution(x)));}}sort(), contains()를 사용하기 위해서 배열 형태가 아니라 리스트 형태로 풀었다.
Integer의 리스트를 int 배열로 돌리기에는 반복문아니면 stream을 통한 람다로 풀어야 한다.
다른 사람 풀이
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 -> 중복을 허용하지 않음.
중복값을 HashSet에 값을 add해도 추가가 되지 않음.
Set의 클래스중 하나인 HashSet 말고 TreeSet을 사용해도 된다.
HashSet과 TreeSet의 차이점으로는 HashSet보다 TreeSet이 추가, 삭제는 느리지만 검색과 정렬은 더 유리하다.
https://coding-factory.tistory.com/555
다른 사람 풀이2
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;}}마찬가지로 Set을 이용한 풀이 방법.
Iterator를 사용해서 객체 자체를 가져와서 while문으로 돌린 모습.
정렬을 하기 위해서 list에 담은 모습인데 stream을 활용하여 sorted()를 사용했다면 더 간결하게 표현이 가능 했을 것이다.
반응형'알고리즘' 카테고리의 다른 글
프로그래머스 - 3진법 뒤집기 (0) 2022.07.22 프로그래머스 - 예산 (0) 2022.07.21 프로그래머스 - 비밀 지도 [2018 KAKAO BLIND RECRUITMENT] (0) 2022.07.06 프로그래머스 - 나머지가 1이 되는 수 찾기 (0) 2022.07.04 프로그래머스 - 2016년 (0) 2022.07.01