알고리즘 공부/프로그래머스

(Java)프로그래머스 코딩테스트 연습 - 2019 카카오 개발자 겨울 인턴십 - 튜플

HRuler 2020. 12. 12. 18:14

1. 문제

https://programmers.co.kr/learn/courses/30/lessons/64065?language=java

 

코딩테스트 연습 - 튜플

"{{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

2. 나의 풀이

import java.util.*;

class Solution {
    public ArrayList<Integer> solution(String s) {
        ArrayList<Integer> answer = new ArrayList<Integer>();
		
		ArrayList<String> arr = new ArrayList<>();
		String str = "";
		for(int i = 2; i < s.length(); i = i + 1) {
			if(s.substring(i, i + 1).equals("}")) {
				arr.add(str);
				str = "";
				i = i + 2;
				continue;
			}
			str += s.substring(i, i + 1);
			//System.out.println("arr : " + arr);
		}
		//System.out.println("arr(정렬 전) : " + arr);
		Comparator<String> c = new Comparator<String>() {
			public int compare(String o1, String o2) {
				return Integer.compare(o1.length(), o2.length());
			}
		};
		Collections.sort(arr, c);
		//System.out.println("arr(정렬 후) : " + arr);
		for(int i = 0; i < arr.size(); i = i + 1) {
			String [] imsi = arr.get(i).split(",");
			for(int j = 0; j < imsi.length; j = j + 1) {
				if(!answer.contains(Integer.parseInt(imsi[j]))) {
					answer.add(Integer.parseInt(imsi[j]));
				}
			}
		}
		return answer;
    }
}

3. 다른 사람 풀이

import java.util.*;
class Solution {
    public int[] solution(String s) {
        Set<String> set = new HashSet<>();
        String[] arr = s.replaceAll("[{]", " ").replaceAll("[}]", " ").trim().split(" , ");
        Arrays.sort(arr, (a, b)->{return a.length() - b.length();});
        int[] answer = new int[arr.length];
        int idx = 0;
        for(String s1 : arr) {
            for(String s2 : s1.split(",")) {
                if(set.add(s2)) answer[idx++] = Integer.parseInt(s2);
            }
        }
        return answer;
    }
}