3. 두 개 뽑아서 더하기
https://school.programmers.co.kr/learn/courses/30/lessons/68644
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 2개의 수를 뽑아 더해 만들 수 있는 모든 수를 배열에 오름차순으로 담아 반환하는 solution() 함수를 완성하세요
제약조건
numbers의 길이는 2 이상 100 이하입니다.
numbers의 모든 수는 0 이상 100 이하입니다.
입출력의 예
numbers | result |
[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[] result;
int i=0;
int j=0;
TreeSet<Integer> ts = new TreeSet<>(); //treeset은 항상 오름차순정렬
//TreeSet<Integer> ts = new TreeSet<>(Comparator.reverseOrder()); //항상 내림차순정렬
while(i < numbers.length){
if(j<numbers.length){
if(j>i){
ts.add(numbers[i]+numbers[j]);
j += 1;
}else{
j +=1;
}
}else{
j=0;
i++;
}
}
//treeset -> int[]배열로 변경
result = ts.stream().mapToInt(Integer::intValue).toArray();
return result;
}
}
- map(Integer::intValue).toArray()
- map(Integer::intValue)는 여전히 Stream<Integer>를 반환하므로, toArray()를 호출하면 기본적으로 Object[] 타입의 배열이 생성됩니다.
- Integer[] 배열을 만들려면 toArray(Integer[]::new)처럼 형식을 명시적으로 지정해야 합니다.
- mapToInt(Integer::intValue).toArray()
- mapToInt(Integer::intValue)는 IntStream을 반환하므로, toArray()를 호출하면 int[] 타입의 배열이 생성됩니다.
- 이 방식은 원시 타입 배열을 직접 반환하므로 메모리 효율이 높고 성능도 더 좋습니다
- map(Integer::intValue).toArray()는 Integer[] 배열을 생성하거나 기본적으로 Object[] 배열을 만듭니다.
- mapToInt(Integer::intValue).toArray()는 int[] 배열을 생성합니다.
반응형
'컴퓨터 과학 > 💯 코테' 카테고리의 다른 글
코딩 테스트 합격자 되기 | 문제5. 행렬의 곱셈 (0) | 2024.11.08 |
---|---|
코딩 테스트 합격자 되기 | 문제4. 모의고사 (0) | 2024.11.08 |
코딩 테스트 합격자 되기 | 문제2. 배열 제어하기 (0) | 2024.11.07 |
코딩 테스트 합격자 되기 | 문제1. 배열 정렬하기 (0) | 2024.11.04 |
에라토스테네스의 체 (2) | 2022.09.10 |