View

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

📚 문제

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

 

📝 문제 해결

배열의 모든 수를 더해 중복값을 허용하지 않는 HashSet에 저장해주고 다시 int 배열로 바꿔 정렬한 뒤 리턴하면 된다.

 

hs.stream().mapToInt(Integer::intValue).sorted().toArray();

스트림을 사용하면 배열이나 컬렉션(List, Set, Map) 등을 사용해 원하는 값을 얻으려는 경우 기존의 for 도배를 줄일 수 있고 원하는 값을 메소드만 사용해서 쉽게 가져올 수 있다. (다만 디버깅이 힘들다는 것이 흠)

[출처 : https://wakestand.tistory.com/419 ]

Collection에 stream()이 정의되어 있어 Collection의 자손(List, Set, Map)을 구현한 컬렉션 클래스들은 모두 stream()으로 스트림을 생성할 수 있다. 

 

💻 코드

import java.util.HashSet;

class Solution {
   public int[] solution(int[] numbers) {
	   HashSet<Integer> hs = new HashSet<>();
      
       for(int i=0; i<numbers.length-1; i++){
           for(int j=i+1; j<numbers.length; j++){
               hs.add(numbers[i]+numbers[j]);
           }
       }
		
       return hs.stream().mapToInt(Integer::intValue).sorted().toArray();
    }
}
728x90
Share Link
reply
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31