[프로그래머스] 월간 코드 챌린지 시즌1 - 두 개 뽑아서 더하기 (JAVA)

·2023년 1월 23일
0

프로그래머스

목록 보기
25/59

📌 문제 설명

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

📌 제한 사항

  • numbers의 길이는 2 이상 100 이하입니다.
    • numbers의 모든 수는 0 이상 100 이하입니다.

📌 입출력 예

numbersresult
[2,1,3,4,1][2,3,4,5,6,7]
[5,0,2,7][2,5,7,9,12]

📌 코드

import java.util.*;

class Solution {
    public int[] solution(int[] numbers) {
      int []answer;
      int index = -1;
      HashSet<Integer> hashSet = new HashSet<>();
      for(int i = 0; i < numbers.length; i++){
          for(int j = 0; j <numbers.length; j++){
              if(i == j)
                  continue;
              else
                  hashSet.add(numbers[i] + numbers[j]);
          }
      }
      answer = new int[hashSet.size()];
      Iterator it = hashSet.iterator();
      while(it.hasNext()){
          answer[++index] = (int) it.next();
      }
      Arrays.sort(answer);
      return answer;
    }
}

📌 문제 해결 과정

💡 서로 다른 두 인덱스를 골라야 하므로 ij가 같다는 것은 인덱스가 같다는 것이므로 이때는 continue를 통해 해당 반복을 그냥 넘겨 버리고, 인덱스가 다를 시에는 HashSet을 이용해 값을 저장해 준다 (HashSet은 중복된 값을 허용하지 않기 때문에 똑같은 값이 저장될 수 없기에 사용하게 되었다)

💡 리턴 해야 할 answer 배열의 크기를 HashSet에 저장된 사이즈로 지정해 주고, HashSet은 각각의 값을 불러오는 것은 안 되기 때문에 iterator를 통해 값을 불러와 answer 배열에 넣고 오름차순으로 정렬해야 하기 때문에 sort()를 사용해 주었다

❕ 이 문제 풀면서 HashSet을 처음 사용해 보았다 각각의 값을 불러오는 게 조금 불편했지만 중복된 값을 저장하지 않는다는 점에서 문제 풀 때 유용하게 쓰일 수 있을 것 같다 새로운 걸 알아 가는 기분이라 뿌듯하다 🤩

profile
공부는 많은 양을 하진 않더라도 꾸준히 매일 하기

0개의 댓글