-- 문제링크 --
두 개 뽑아서 더하기
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
numbers의 길이는 2 이상 100 이하입니다.
numbers의 모든 수는 0 이상 100 이하입니다.
import java.util.ArrayList;
import java.util.Arrays;
class Solution {
public int[] solution(int[] numbers) {
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i=0; i<numbers.length; i++){
for(int j=i+1;j<numbers.length; j++){
int a = numbers[i]+numbers[j];
if (list.indexOf(a) < 0){
list.add(a);
}
}
}
int[] answer = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
answer[i] = list.get(i);
}
Arrays.sort(answer);
return answer;
}
}
import java.util.HashSet;
import java.util.Set;
class Solution {
public int[] solution(int[] numbers) {
Set<Integer> set = new HashSet<>();
for(int i=0; i<numbers.length; i++) {
for(int j=i+1; j<numbers.length; j++) {
set.add(numbers[i] + numbers[j]);
}
}
return set.stream().sorted().mapToInt(Integer::intValue).toArray();
}
}
- 중복된 값을 허용 X
- 순서를 보장 X
- null 값을 저장할 수 O
- 내부적으로 HashMap을 사용하여 데이터를 저장
HashSet<Type> name = new HashSet<>();
- add()
- 인자를 저장
- 객체를 저장할 때 객체가 Set에
저장되어있지 않았다면 True를 리턴
저장되어있다면 False를 리턴public boolean add(E e)
- remove()
- 인자로 전달된 객체를 Set에서 삭제
- 객체를 삭제할 때 객체가 Set에
존재하여 삭제 되었으면 True를 리턴
존재하지 않았다면 False를 리턴public boolean remove(Object o)
- removeAll()
- 인자로 받은 Collection에 저장된 아이템들을 HashSet에서 삭제boolean removeAll(Collection<?> c)
Set<String> abc = new HashSet<String>();
abc.add("aaa");
abc.add("bbb");
abc.add("ccc");
System.out.println("abc : " + abc);
List<String> removed = new ArrayList<>();
removed.add("aaa");
removed.add("ccc");
abc.removeAll(removed);
System.out.println("abc : " + abc);
//abc : [aaa, ccc, bbb]
//abc : [bbb]
- removeIf()
- 인자로 람다식을 받을 수 있다
- 함수형 인터페이스로 만들어진 객체를 받는다고 할 수 있다
- Set의 아이템 중에 이 조건에 충족하는 객체는 삭제public boolean removeIf(Predicate<? super E> filter) //스트링의 길이가 4보다 큰 아이템을 삭제
- size()
- HashSet에 저장된 아이템 개수를 리턴public int size()
- clear()
- HashSet의 모든 아이템들을 삭제public void clear()
- contains()
- Set 안에 객체가 존재하는지 여부를 리턴public boolean contains(Object o)
- iterator()
- Iterator 객체를 리턴
- 이 객체로 Set의 모든 아이템을 순회할 수 있다public Iterator<E> iterator()
Set<String> abc = new HashSet<String>();
abc.add("aaa");
abc.add("bbb");
abc.add("ccc");
//----- 첫번째 방법 -----
Iterator<String> it = abc.iterator();
while (it.hasNext())
System.out.println("abc : " + it.next());
//----- 두번째 방법 -----
for (String printabc : abc) {
System.out.println("abc : " + printabc);
}
// abc : aaa
// abc : bbb
// abc : ccc
- isEmpty()
- Set에 저장된 아이템이 없으면 True를 리턴public boolean isEmpty()
잘 보구가요 정리가 잘 되어있네요