IT/알고리즘
프로그래머스 문자열 내림차순으로 배치하기
어센트
2020. 5. 17. 20:01
https://programmers.co.kr/learn/courses/30/lessons/12917
코딩테스트 연습 - 문자열 내림차순으로 배치하기
문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 �
programmers.co.kr
이 문제를 보고 두가지 방법을 떠올렸다.
-
Arrays.sort()로 정렬 후 뒤집기
-
Collection에 Comparator를 이용하기
2의 방법으로 문제를 해결했는데 코드에디터의 도움 없이 Comparator를 이용하기 힘들 것 같다. 조금 더 익숙해질 필요가 있을 것 같다.
import java.util.*;
public class 문자열_내림차순으로배치하기 {
public static void main(String[] args) {
String s="Zbcdefg";
System.out.println(solution(s));
}
public static String solution(String s) {
String answer = "";
ArrayList<Character> list = new ArrayList<>();
for(int i=0;i<s.length();i++)
{
list.add(s.charAt(i));
}
Collections.sort(list, new Comparator<Character>() {
@Override
public int compare(Character o1, Character o2) {
if(o1<o2) return 1;
else if(o1==o2) return 0;
else return -1;
}
});
for(char c:list){
answer+=Character.toString(c);
}
return answer;
}
}
다른 풀이
Char[]를 바로 new String()으로 String형으로 바꿀 수 있다는 것을 배웠다.
public static String solution2(String s) {
char [] ar = s.toCharArray();
Arrays.sort(ar);
StringBuilder sb = new StringBuilder(new String(ar)).reverse();
return sb.toString();
}