728x90
programmers.co.kr/learn/courses/30/lessons/64065
문제 풀이
중복 없고, 순서 있는 구조.
자바에는 튜플이 없으므로 set을 이용하여 겹치지 않을 경우에만 결과로 반환할 배열에 넣음
( String.split()보다 StringTokenizer가 속도면에서 더 빠르기때문에 웬만하면 StringTokenizer를 사용하려고 했으나 구분자에 공백이 포함될 경우 공백을 구분자로 취급을 안하는 것 같아 split 함수를 사용하였다. )
( Set 인터페이스의 add함수는 set안의 요소들과 겹치지 않을 경우에 true를 반환한다는 것을 이용하였다 )
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.StringTokenizer;
public class Solution {
public static int[] solution(String s) {
String str[] = s.replace("{", " ").replace("}", " ").trim().split(" , ");
Arrays.sort( str, ( s1, s2 ) -> { return s1.length()-s2.length(); } );
Set<Integer> hs = new HashSet<>();
StringTokenizer st;
int res[] = new int[str.length], i = 0, n;
for( String ss : str ) {
st = new StringTokenizer( ss, "," );
while( st.hasMoreTokens() ) {
n = Integer.parseInt( st.nextToken() );
if( hs.add( n ) )
res[i++] = n;
}
}
return res;
}
}
반응형
'코딩 문제 풀기 ( Algorithm problem solving ) > 프로그래머스 ( Programmers )' 카테고리의 다른 글
[프로그래머스(Programmers)][자바(java)] (Lv2) 땅따먹기 (0) | 2020.10.15 |
---|---|
[프로그래머스(Programmers)][자바(java)] (Lv2) 다음 큰 숫자 (0) | 2020.10.15 |
[프로그래머스(Programmers)][자바(java)] (Lv2) 올바른 괄호 (0) | 2020.10.14 |
[프로그래머스(Programmers)][자바(java)] (Lv2) 단체사진 찍기 <2017 카카오코드 본선> (0) | 2020.10.14 |
[프로그래머스(Programmers)][자바(java)] (Lv2) 가장 큰 정사각형 찾기 (0) | 2020.10.14 |