코딩 테스트

프로그래머스) 두 개 뽑아서 더하기 Lv1

우루쾅 2024. 2. 6. 23:17
728x90
반응형
SMALL

손풀기 문제로 쉬워보이는 문제를 뽑아서 풀었는데

ArrayList 중복 제거 방법을 만들어보려고 하다가 살짝 헤맸다...

 

이 문제는 각각 순서대로 

① 더한 값들을 모두 ArrayList에 저장

② ArrayList 중복 제거

③ ArrayList 값 배열에 넣기

④ 배열 정렬

 

위 방식대로 문제를 해결했다

 

되게 정석적이고 쉬운 방식이긴한데 소스가 길어져서 다른 훌륭한 답변이 있나

다른 분들 답을 구경했는데 세상에....

리턴 타입을 바꿔도 정답으로 처리가 된다

 

흠.... 그렇다면 내꺼 소스도 굳이 ArrayList를 배열로 변환하지 않아도 됬었겠다 생각이 들었다 ㅎㅎ

 

코테 문제는 문제를 풀고 다른 사람들은 어떻게 문제를 풀었는지 구경하는게 재밌는거같다!

 


 

 

 

 

 

정답

import java.util.*;
import java.util.stream.Collectors;

class Solution {
    public int[] solution(int[] numbers) {
        ArrayList<Integer> arr = new ArrayList<>();
        ArrayList<Integer> arrSt = new ArrayList<>();
        
        
        // 더한 값들을 모두 ArrayList에 저장
        for(int i=0; i<numbers.length; i++){
            for(int j=i+1; j<numbers.length; j++){
                arr.add(numbers[i] + numbers[j]);
            }
        }
        
        // ArrayList 중복 제거
        arr = (ArrayList<Integer>) arr.stream().distinct().collect(Collectors.toList());    
        
        // 배열 생성
        int[] answer = new int[arr.size()];
        
        // ArrayList 값 배열에 넣기
        for(int i=0; i<arr.size(); i++){
            answer[i] = arr.get(i);
        }
        
        // 답 정렬
        Arrays.sort(answer);
        
        return answer;
    }
}

 

 

 

출처

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

728x90
반응형
LIST