공부/프로그래머스
[프로그래머스] 튜플 - 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
반응형