하루에 한 문제

[프로그래머스 2019 카카오 개발자 겨울 인턴십] 튜플 -Java 본문

알고리즘/프로그래머스

[프로그래머스 2019 카카오 개발자 겨울 인턴십] 튜플 -Java

dkwjdi 2020. 12. 24. 16:57

https://programmers.co.kr/learn/courses/30/lessons/64065

 

코딩테스트 연습 - 튜플

"{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1]

programmers.co.kr

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
class Solution {
	    public int[] solution(String s) {
	        
	        String []tmp=s.split("\\{");
	        String []str=new String[tmp.length-2];
	        for(int i=0; i<str.length; i++) {
	        	str[i]=tmp[i+2].substring(0, tmp[i+2].length()-2);
	        }
	        
	        int[] answer = new int[str.length];
	        Set <String> set = new HashSet<>();
	        Arrays.sort(str, (o1,o2)-> o1.length()-o2.length());
	        
	        for(int i=0; i<str.length; i++) {
	        	String [] divide=str[i].split(",");
	        	for(int j=0; j<divide.length; j++) {
	        		if(set.contains(divide[j])) continue;
	        		answer[i]=Integer.parseInt(divide[j]);
	        		set.add(divide[j]);
	        	}
	        }
	        return answer;
	    }
	}

소요시간 : 20분

 

우선 큰 로직은 입력으로 받은 튜플을 각 집합의 길이 오름차순으로 정렬합니다.

만약 입력이 이렇게 들어온다면 

{2} , {2,1}, {1,2,3}, {1,2,4,3} 처럼 정렬해줍니다.

 

그리고 집합을 순회하면서 Set을 이용해서 중복체크를 해줍니다.

만약 Set에 없는 원소라면 추가해주고 있는 원소라면 Skip해줍니다.

Comments