Contents
https://school.programmers.co.kr/learn/courses/30/lessons/68644
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
간단한 문제다
주어진 배열에 있는 숫자들을 두개씩 골라 더해서
나올 수 있는 모든 경우를 반환하라고 한다.
단 중복 제외, 오름차순 정렬해서
코드부터 보시죵
import java.util.*;
class Solution { // 두개 뽑아서 더하기
public int[] solution(int[] numbers) {
Set<Integer> set = new HashSet<>(); // set에다가 더한 수 넣기 중복값x
for (int i = 0; i < numbers.length; i++) { // i는 첫번째 수
for (int j = i + 1; j < numbers.length; j++) { // j는 두번째 수
set.add(numbers[i] + numbers[j]);
}
}
ArrayList<Integer> list = new ArrayList<>(set); // 정렬을 위해 이사함 set에는 배열 순서가 없기 때문
Collections.sort(list); // 정렬
int[] answer = new int[list.size()]; // answer에 넣어주기
for (int i = 0; i < list.size(); i++) {
answer[i] += list.get(i);
}
return answer;
}
}
중복 값을 피하기 위해 set을 이용했다.
set은 인덱스가 없음 즉 중복 허용x라는 특징을 가지고 있다.
자세한 설명은 다음 포스팅에 올리도록 하겠습니당
- 이중 for문을 이용해 set에다가 모든 경우를 넣어주었다
- set은 인덱스가 없기 때문에 정렬이 불가능하다 그래서 ArrayList를 선언해 모든 값들을 이사시켜주었다
- 정렬 후 int형 배열인 answer에 넣어주었다
2Z
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 카드 뭉치 (JAVA) (2) | 2024.03.30 |
---|---|
[프로그래머스] JadenCase 문자열 만들기 (JAVA) (4) | 2024.03.27 |
[프로그래머스] 내적 (JAVA) (2) | 2024.03.14 |
[프로그래머스] 정수 내림차순으로 배치하기 (JAVA) (1) | 2024.03.14 |
[프로그래머스] 두 정수 사이의 합(JAVA) (0) | 2024.03.14 |