공부/프로그래머스

[프로그래머스] 튜플 - Java

빈v 2024. 7. 3. 22:45
728x90

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 프로그래머스 튜플 자바 풀이

난이도: Lv2

 

풀이

우선  '{'를 제거하였고 그 후 마지막의 }'}'를 제거하여 구분할 수 있게 하였다.

그 후 '},'를 통하여 각 집합을 구분하였다.

집합을 구분 후, 각 집합의 원소의 갯수에 따라 정렬하였다.

 

중복된 원소가 없는 튜플이라고 주어졌으므로,

각 중복된 숫자가 나오지 않게 HashSet으로 중복 여부를 파악 후 

중복되지 않았을 경우 튜플에 주가하였다.

그 후 중복 여부를 파악하기 위해 HashSet에 값을 추가하였다.

 

코드

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashSet;
import java.util.stream.Stream;
class Solution {
    public int[] solution(String s) {
        s=s.replaceAll("\\{", "");
        s=s.substring(0,s.length()-2);
        String[] arr=s.split("\\}\\,");
        Arrays.sort(arr,Comparator.comparingInt(String::length));

        HashSet<Integer> set = new HashSet<>();
        ArrayList<Integer> list = new ArrayList<>();

        for(int i=0;i<arr.length;i++){
            int[]tuple = Stream.of(arr[i].split(",")).mapToInt(Integer::parseInt).toArray();
            for(int num:tuple){
                if(!set.contains(num)){
                    list.add(num);
                    set.add(num);
                }
            }
        }
        int[] answer = new int[list.size()];

        for(int i=0;i<list.size();i++){
            answer[i]=list.get(i);
        }
        
        return answer;
    }
}

 

 

 

728x90
반응형