[프로그래머스/자바] 문자열 내림차순으로 배치하기

솔솔·2023년 2월 10일
0
post-thumbnail


📑 문제 설명

문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.



🧑🏻‍💻 문제 풀이

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

class Solution {
    public String solution(String s) {
        List<Character> list = new ArrayList<>();
        
        for(int i=0;i<s.length();i++) {
        	list.add(s.charAt(i));
        }
        
        list.sort(Comparator.reverseOrder());
        
        StringBuilder sb = new StringBuilder();
        for(Character c : list) {
        	sb.append(c);
        }
        
        String answer = sb.toString();
        return answer;
    }
}
  1. list.add(s.charAt(i))를 이용해 String s의 글자를 Character 배열 list에 담음
  2. list.sort() 함수를 이용해 내림차순으로 정렬
  3. StringBuilder sb를 생성, 정렬된 list의 문자들을 추가
  4. sb.toString()으로 StringBuilder를 String으로 변환해 리턴



🧑🏻‍💻 다른 사람의 풀이

import java.util.Arrays;

public class ReverseStr {
    public String reverseStr(String str){
    char[] sol = str.toCharArray();
    Arrays.sort(sol);
    return new StringBuilder(new String(sol)).reverse().toString();
    }
  1. toCharArray()로 str을 char[] sol에 담음
  2. Arrays.sort()로 정렬
  3. StringBuilder(new String(sol)).reverse().toString()
    char 배열을 문자열로 변환한 StringBuilder 생성, 문자열을 뒤집고 String 변환



💡 학습하기


toCharArray()
String 문자열을 Char형 배열로 바꿔서 반환해주는 메소드


List.sort()
Java8 이후 Collections.sort()가 아닌 List.sort() 메소드로 정렬 가능

  • 오름차순: list.sort(Comparator.naturalOrder());
  • 내림차순: list.sort(Comparator.reverseOrder());
  • 오름차순(대소구분X): list.sort(String.CASE_INSENSITIVE_ORDER);
  • 내림차순(대소구분X): list.sort(Collections.reverseOrder(String.CASE_INSENSITIVE_ORDER));



🔗 문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/12917?language=java

0개의 댓글