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

문제를 처음 봤을때 결과값 배열이 중복이 되면 안되니
HashSet을 떠올리게 되었다.
그래서 그 진행대로 코드를 진행하였는데
import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
HashSet<Integer> set = new HashSet<>();
ArrayList<Integer> arr = new ArrayList<>();
for(int i =0;i<numbers.length -1;i++){
for(int k=i+1; k < numbers.length; k++){
int temp= numbers[i] + numbers[k];
set.add(temp);
}
}
Iterator<Integer> iter = set.iterator();
while(iter.hasNext()){
arr.add(iter.next());
}
int[] answer = new int[arr.size()];
for(int i=0;i<arr.size();i++){
answer[i]= arr.get(i);
}
return answer;
}
}

실패가 떳다.
그래서 코드를 보다가 결국 contains를 사용하면 되겠다고 생각해서
조금더 간결하게 바꿀수 있었다.
또한 Array로 바꾸는게 조금 난감 하여서 조금 쉽게 하는 방법 없나 찾다가
다른 사람의 코드를 보고 stream의 toArray를 사용하는 것을 알게 되어 맞추어 수정했다.
import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
ArrayList<Integer> arr = new ArrayList<>();
for(int i =0;i<numbers.length -1;i++){
for(int k=i+1; k < numbers.length; k++){
int temp= numbers[i] + numbers[k];
if(!arr.contains(temp)){
arr.add(temp);
}
}
}
return arr.stream().sorted().mapToInt(i -> i).toArray();
}
}

반응형
'프로그래머스' 카테고리의 다른 글
| 로또의 최고 순위와 최저 순위 - 자바(Java) (0) | 2024.04.08 |
|---|---|
| 프로그래머스 예산 - 자바(Java) (0) | 2024.04.08 |
| 99클럽 코테 스터디 9일차 TIL 문자열 내 마음대로 정렬하기 (0) | 2024.04.06 |
| 99클럽 코테 스터디 8일차 TIL 행렬의 곱셈 (0) | 2024.04.05 |
| 99클럽 코테 스터디 7일차 TIL 프로그래머스 할인 행사(Java) (1) | 2024.04.04 |