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

스브코·2021년 11월 12일
0

문제 출처: https://programmers.co.kr/learn/courses/30/lessons/12917[링크텍스트](https://programmers.co.kr/learn/courses/30/lessons/12917)

문제 설명

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

입력

"Zbcdefg"

출력

"gfedcbZ"

문제 풀이 1

class Solution {
    public String solution(String s) {
        int [] asciiNum = new int [s.length()];
        char [] chars = new char[s.length()];

        for(int i = 0; i < s.length(); i++) {
            asciiNum[i] = s.charAt(i);
            chars[i] = s.charAt(i);
        }

        for(int j = 0; j < asciiNum.length; j++) {
            for(int n = j + 1; n < asciiNum.length; n++) {
                if(asciiNum[n] > asciiNum[j]) {
                    int temp = asciiNum[j];
                    asciiNum[j] = asciiNum[n];
                    asciiNum[n] = temp;
                    char temp2 = chars[j];
                    chars[j] = chars[n];
                    chars[n] = temp2;
                }
            }
        }

        StringBuilder answer = new StringBuilder();
        for(int k = 0; k < chars.length; k++) {
            answer.append(chars[k]);
        }
        return answer.toString();
    }
}

예전에 내가 풀었던 풀이인데, 최근 연습을 많이 해서 다시 풀어보았다.

문제 풀이 2

import java.util.*;

class Solution {
    public String solution(String s) {
        String [] sArray = s.split("");
        Arrays.sort(sArray, Collections.reverseOrder());
        return String.join("", sArray);
    }
}

확실히 함수 응용력이 올라가고 연습을 많이 하니 더 쉽게 푸는 방법이 보였다.

profile
익히는 속도가 까먹는 속도를 추월하는 그날까지...

0개의 댓글