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

HyunHwa Cho·2022년 7월 8일
0

오늘의 문제는 프로그래머스의 문자열 내림차순으로 배치하기.!

문제 설명

문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.

s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.

입출력 예시

String s = "Zbcdefg"
return result = "gfedcbZ"

처음..이 문제를 봤을때 바로 생각한것은 아스키 코드가 떠올랐다. :)
알파벳의 10진수의 아스키 코드는

  • 소문자 a~z : 97~122
  • 대문자 A~Z : 65~90

그러므로 처음에는 대소문자를 나눈 어레이리스트를 생성후 합쳐서 결과를 출력하려했으나
문제를 다시보니 대문자는 소문자보다 작은것으로 간주한다고 했다.
그러면 배열을 어레이리스트로 변환후 내림차순 정렬후 다시 배열에다 담으면 끝이아닌가..!?

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;


class Solution {
        public static String solution(String s) {
        ArrayList<Character> resultList = new ArrayList<>(); 
        //결과값을 닮을 어레이리스트 생성

        for(int i = 0; i<s.length(); i++){  
        //for문으로 String s의 char들을 resultList에 담아줌
            resultList.add(s.charAt(i));
            } 
        Collections.sort(resultList,Collections.reverseOrder()); 
        //내림차순 정렬로 resultList 정렬
        char[] resultChar = new char[resultList.size()]; 
        //결과를 닮을 resultList크기만한 char[] 배열 생성 
        for(int i=0; i<resultList.size(); i++){ 
            resultChar[i] = resultList.get(i);
        }
        //for문으로 resultList값을 char[] 에다가 넣어줌
        String result = new String(resultChar); 
        //char[] 을 String타입으로 변환
        return result; // 결과 리턴
    }
}

이렇게 풀어냈다. 문제를 푼뒤 항상 다른사람들의 풀이를 보면 진짜.. 가독성도 가독성인데 딱딱 필요한 부분만 간결하게 구현해놓은게 너무.. 부럽고 나도 빨리 저렇게 성장하고 싶다는 생각이 매번든다..

profile
개발 공부 및 기록용 블로그 입니다.

0개의 댓글