728x90
반응형
문제
분석
- 문자열에서 먼저 힌트를 찾을수 있었다.
- 정해진 패턴 대로 들어온다.
"{{2},{2,1},{2,1,3},{2,1,3,4}}"
- 잘 보면 길이 순으로 튜플이 만들어 진다.
- 다음 두가지 조건을 지키면된다.
- {2} {2,3} {2,4,3}
- 짧은 길이 숫자를 먼저 집합에 넣는다.
- 중복이 안되게 한다.
구현
import java.util.*;
class Solution {
public int[] solution(String s) {
s = s.replace("{","");
s = s.replace("}}","");
System.out.println(s);
String []splitArray = s.split("}");
List<int[]> setIntList = new ArrayList<>();
Arrays.sort(splitArray, (s1,s2)-> {return s1.length()-s2.length(); } );
for(int i = 0; i < splitArray.length; i++) {
String []tuple = splitArray[i].split(",");
int []tupleArray = Arrays.stream(tuple).filter(s2->!s2.isEmpty()).mapToInt(Integer::parseInt).toArray();
setIntList.add(tupleArray);
}
List<Integer> answerList = new ArrayList<>();
for(int i = 0; i <setIntList.size(); i++) {
int [] arr = setIntList.get(i);
for(int j = 0; j < arr.length; j++) {
if(!answerList.contains(arr[j]))
{
answerList.add(arr[j]);
}
}
}
int []answer = answerList.stream().mapToInt(Integer::intValue).toArray();
return answer;
}
}
결과
더생각해보기
- 효율성이 많이 떨어진다. 개선할 필요가 있다.
- stream 을 2번 사용했는데 한번에 해결하는 방법이 있을것 같다.
- 코드의 수를 줄여야 된다고 생각한다.
문제링크:
https://programmers.co.kr/learn/courses/30/lessons/64065#
728x90
반응형
'Algorithm > 프로그래머스 알고리즘' 카테고리의 다른 글
[프로그래머스] 정수 삼각형 (0) | 2021.10.18 |
---|---|
[프로그래머스] 영어끝말잇기 (0) | 2021.10.15 |
[프로그래머스] 피보나치 (0) | 2021.08.10 |
[프로그래머스] JadenCase 문자열 만들기 (0) | 2021.08.10 |
[프로그래머스] 쇠막대 (0) | 2021.08.10 |
댓글