[자바코딩] Set to Integer[] to int []

gnoesnooj·2021년 11월 11일

프로그래머스 1단계, 같은 숫자는 싫어 라는 문제이다.

문제를 처음부터 잘못봐서, 컬렉션 set을 사용해선 안되는 문제였는데 사용하고, 모르는 게 생겨서 삽질 아닌 삽질을 해버렸다.

그래도 몰랐던 방법에 대해서 해결방법을 찾는 과정이 있었으니 그나마 다행이라고 봐야할지.. ㅋㅋ

어쨌든 정답을 위한 풀이는 아니지만, 내가 고민이였던 부분이다.

Set은 컬렉션이기 때문에 자료형이 Wrapper 로 들어가게 된다.

하지만 문제에서 원하는 부분은 int 배열형이므로 Set -> Integer [] -> Int [] 순서로 바꿔줘야 했다. 물론, 난 다 몰랐다 ㅎㅎ

1. Set to Integer []

set은 index를 관리하지 않기 때문에, set 안에 있는 객체를 검색할 방법이 없다.
하지만 iterator를 통해서 전체 내용을 한 번씩 가져올 수 있다.

Set<Integer> s = new HashSet<Integer>(); // s.add(1); s.add(2); ...
Iterator<Integer> ite = s.iterator();
while(ite.hasNext()){ // ite : iterator 인스턴스
	System.out.print(ite.next()+" "); // 1 2 3 ...
}

Integer[] to int[]

primitive type -> wrapper 로 바꿔주기 위해선 intValue()를 사용한다.

전체 코드


public class Solution {
    public int[] solution(int []arr) {
        Set<Integer> s = new HashSet<Integer>();
        
        for(int i : arr){
            s.add(i);
        }
        int answer[] = new int [s.size()];
        int index=0;
        Iterator<Integer> ite = s.iterator();
        while(ite.hasNext()){
            answer[index]=ite.next().intValue();
            index++;
        }
        return answer;
    }
}

잘못했지만 어쨌든 몰랐던 내용을 알게 된 계기였다..

profile
누구나 믿을 수 있는 개발자가 되자 !

0개의 댓글