알고리즘테스트 3일차. 컬렉션프레임워크를 정리하고 남은시간에 코딩테스트를 풀었다.
문제
여기서 HashSet을 사용해서 쓰려니 배열로 바꾸는게 힘들었다.
시도
int[] answer = set1.toArray(new int[0]);
set을 배열로 바로 변환이 안된다!!
에러코드를 보니 int와 Interger차이때문에 안되는 것 같은데 이건 질문으로 물어보자.
Iterator를 써서 배열에 for문으로 넣으니
입력해야되는 값은 int인데 Iterator 값은 Object라 실패
나중에 다른 사람 답변을 보니 itor.next(); 앞에 (int)로 주면 된다.
while(itor.hasNext()){ answer[index] = (int)itor.next(); index++; }
Set<Integer> set1 = new HashSet<Integer>();
ArrayList<Integer> arrList = new ArrayList<Integer>();
for (int i = 0; i < numbers.length; i++) {
for (int j = i+1; j < numbers.length; j++) {
set1.add(numbers[i] + numbers[j]);
}
}
int[] answer = new int[set1.size()];
for (int x : set1) {
arrList.add(x);
}
Collections.sort(arrList);
int count = 0;
for (int y : arrList) {
answer[count] = y;
count++;
}
return answer;
for (int x : set1) {
arrList.add(x);
}
이렇게하면 Iterator를 안써도 바로 들어간다.
int count = 0;
for (int y : arrList) {
answer[count] = y;
count++;
}
if (i==j){continue;}
안써도 된다.for (int i = 0; i < numbers.length; i++) {
for (int j = i+1; j < numbers.length; j++) {
set.add(answer[i]+answer[j];)
int[] answer = set1.stream().mapToInt(Integer::intValue).toArray();
한줄로 정리했다..
Interger를 Int로 바꿔주는 방법을 검색해보니 mapToInt가 나오는 걸로 봐서 이렇게 한 것 같은데 이거에 대해서는 좀 더 공부해보자.
Iterator 개념
int와 Interger차이