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

JinjuLog·2021년 2월 15일
0

알고리즘

목록 보기
11/12
post-thumbnail

🚩 문제 설명

정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.

📝 해결방법

두개의 수를 뽑아 만들 수 있는 값들을 모두 리스트에 담고 set을 이용하여 중복을 제거한다.

📝 배운것

List 요소에서 중복 제거하는 방법

  • 리스트 요소 한개씩 확인하는 방법
    - contains이용해서 값을 포함하는지 확인!
  • HashSet 이용하기
  • TreeSet 이용하기 -> 오름차순으로 자동정렬

Set은 List와 달리 순서를 유지하지 않고, 데이터의 중복을 허용하지 않는다.

👩🏻‍💻 내코드

import java.util.*;

class Solution {
    public ArrayList solution(int[] numbers) {
        ArrayList<Integer> answer1 = new ArrayList<>();
        
        for(int i=0; i<numbers.length-1; i++){
            for(int j=i+1; j<numbers.length; j++){
                answer1.add(numbers[i]+numbers[j]);
            }
        }
        
        TreeSet<Integer> ts = new TreeSet<>(answer1);
        ArrayList<Integer> answer = new ArrayList<>(ts);
           
        return answer;
    }
}

📝 개선사항

출처 : programmers 두 개 뽑아서 더하기

1개의 댓글

comment-user-thumbnail
2021년 4월 5일

안녕하세요. 코드 참고하다가 질문드립니다 :)
첫번째 for문(i사용) 에서 size 범위를 length-1 로 하신 이유가 있을까요? 제가 생각하기엔 for문 둘 다 length 미만이라고 생각되는데 -1하신 이유가 궁금합니다!

답글 달기