알고리즘왕/Programmers

[프로그래머스/JAVA] 튜플

찌 ㅋ 2021. 5. 4. 00:11

풀이

  1. 문자열을 },{ 을 기준으로 쪼갬
  2. 길이순으로 정렬
  3. 짧은 것부터 앞에 포함되지 않은 숫자를 찾음

 

비고

  • str.split("\\},\\{")
    • 물음표, 별, 더하기, 괄호 등은 메타문자로 사용되기 때문에 반드시 이스케이프 처리해줘야 함

 

 

더보기
package KakaoIntern2019.P64065_튜플;

import java.util.Arrays;
import java.util.Comparator;
import java.util.HashSet;
import java.util.Set;
import java.util.StringTokenizer;

public class Solution {

	static public int[] solution(String s) {
		int[] answer = {};

		s = s.replace("{{", "");
		s = s.replace("}}", "");

		String[] tuple = s.split("\\},\\{");

		Arrays.sort(tuple, new Comparator<String>() {

			@Override
			public int compare(String o1, String o2) {
				return o1.length() - o2.length();
			}
		});

		answer = new int[tuple.length];
		Set<Integer> set = new HashSet<>();
		StringTokenizer st = null;
		for (int i = 0; i < tuple.length; i++) {
			st = new StringTokenizer(tuple[i], ",");
			while (st.hasMoreTokens()) {
				int cur = Integer.parseInt(st.nextToken());
				if (set.contains(cur))
					continue;
				answer[i] = cur;
				set.add(cur);
			}
		}
		return answer;
	}

	public static void main(String[] args) {
		int[] a1 = solution("{{2},{2,1},{2,1,3},{2,1,3,4}}");
		for (int i : a1) {
			System.out.print(i + " ");
		}
		System.out.println();
	}

}