#1 알고리즘 문제 풀기

코딩테스트 2021. 1. 3. 03:46

오늘은 해당 문제를 풀어볼 것이다. 

 이라고 가정을 하고 진행을 해봅시다.

내가 생각한 방법은 HashSet으로 중복을 제거된 상태의 객체를 만든 후 그 set을 List에 담고 그것을 배열에 담아서 리턴해주는 방식으로 진행을 하였다.

 

 

※ #1 HashSet에 서로 다른 index의 값을 넣어주기 

   HashSet<Integer> set = new HashSet<Integer>();
	        
       for(int i=0; i<numbers.length;i++){
	       for(int i2=0; i2<numbers.length; i2++){
	           if(i == i2) {
	               continue;
	           }
	           set.add(numbers[i] + numbers[i2]);
	       }  
	   }  
	   return test(set);

☞ 이중for문을 돌면서 서로 다른 index에 있는 값들을 set에 넣어준다.

☞ HashSet은 중복된 값을 넣을 수 없기때문에 중복이 제거된 수만 넣어지게 된다.

☞ 리턴을 test 라는 함수에 인자값으로 던져준다.

 

※ #2 HashSet의 인자값을 배열형식으로 변환하기

  public static int[] test(HashSet set) {
			
	    	System.out.println(set);
	    	List<Integer> list = new ArrayList<Integer>(set);
			Collections.sort(list);
            
	    	int[] arr = new int[list.size()];
	    	
	    	for(int i=0; i<list.size(); i++) {
	    		arr[i] = list.get(i);
	    	}
	    	return arr;
	    }

☞ HashSet 을 List로 변환하기

☞ List에 있는 값들을 배열으로 변환하여 리턴시키기

방법은 간단합니다. 

변환된 List를 for문을 돌면서 배열에 넣어주고 그 배열을 리턴시켜주면 끝입니다.

 

※ #3 전체 코드 

    public static int[] solution(int[] numbers) {

	        HashSet<Integer> set = new HashSet<Integer>();
	        
	        for(int i=0; i<numbers.length;i++){
	            for(int i2=0; i2<numbers.length; i2++){
	                if(i == i2) {
	                    continue;
	                }
	                set.add(numbers[i] + numbers[i2]);
	            }  
	        }  
	        return test(set);
	    }
	
	    public static int[] test(HashSet set) {
			
	    	System.out.println(set);
	    	List<Integer> list = new ArrayList<Integer>(set);
	    	
	    	int[] arr = new int[list.size()];
	    	
	    	for(int i=0; i<list.size(); i++) {
	    		arr[i] = list.get(i);
	    	}
	    	return arr;
	    }

 

◈ 햇갈렷던 부분 

  1. 서로다른 index를 더하면 수많은 더한 값들은 어떻게 처리를 해야하는가?
  2.  
  3. 중복된 값들은 어떻게 중복제거를 할 것인가?
  4.  
  5. HashSet 을 어떻게 배열형식으로 리턴을 해주도록 할것인가?

위의 3개의 관점에서 햇갈렷던거 같습니다.

사람마다의 생각하는 것과 처리하는 것을 수많가지 이므로 이보다 더 좋은 처리방법or다른처리방법 댓글로 남겨주시면 감사하겠습니다.

 

'코딩테스트' 카테고리의 다른 글

#3 알고리즘 문제 풀기  (0) 2021.01.05
#2 알고리즘 문제 풀기  (0) 2021.01.03

설정

트랙백

댓글