반응형
프로그래머스 Level1 > 코딩테스트 연습 > 월간 코드 챌린지 시즌1 > 두 개 뽑아서 더하기
문제설명
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 return 하도록 solution 함수를 완성해주세요. ( 프로그래머스 문제 확인 )
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
|
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
class Solution {
public int[] solution(int[] numbers) {
int[] answer = {};
List <Integer> list = new ArrayList<>();
for(int i= 0; i<numbers.length-1; i++){
for(int j= i+1; j<numbers.length; j++ ){
int sum = numbers[i]+numbers[j];
if(!list.contains(sum)){
list.add(sum);
}
}
}
Collections.sort(list);
answer = new int [list.size()];
int index = 0;
for(int num: list) {
answer[index] = num;
index++;
}
return answer;
}
}
|
cs |
공부한 내용
* 배열(Array)의 길이는 length 확인
* 배열리스트 (ArrayList)의 길이는 size 확인
* contains 메소드 : list 안에 항목 값이 있는지 확인 후, 결과 값을 boolean 반환
* Collections.sort() : ArrayList 정렬할 때 사용
* 향상된 for문 for (int num : list) { } : answer[index] = num; num에 list의 값을 순서대로 넣어준다는 의미!
* Iterator : 어떤 컬렉션이라도 동일한 방식으로 접근이 가능하여 그 안에 있는 항목들에 접근할 수 있는 방법을 제공 (ex) 리스트에서 값을 가져올 때는 get을 사용, 배열에서 값을 가져올 때는 index를 사용하는 등 각각 데이터를 읽는 메소드를 알아야하고, 각각 컬렉션 접근이 어려움 > lterator을 이용하면 동일한 방식으로 접근 > 향상된 for문
반응형
댓글