코딩테스트 | 문자열 내림차순으로 배치하기, 우선순위 큐, 문자열에서 문자 추출

Bluewave·2024년 3월 5일

코테공부_java

목록 보기
6/99
post-thumbnail

문제

문제레벨정답률
문자열 내림차순으로 배치하기Lv.182%

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

🖥️ 문제 바로가기


나의 답안

import java.util.*;

class Solution {
    public String solution(String s) {
        String answer = "";
        
        PriorityQueue<Character> queueS = new PriorityQueue<>(Comparator.reverseOrder());
        for(int i = 0; i<s.length(); i++){
            queueS.add(s.charAt(i));
        }
        
        for(int i = 0; i<s.length(); i++){
            answer += queueS.poll();
        }
        
        return answer;
    }
}

사실 문제 자체는 너무 쉽다. 그런데 문제를 보자마자 전에 정리했던 우선순위 큐를 써봐야겠다는 생각이 들어서 우선순위 큐를 사용하여 간단하게 풀이해보았다.
다른 사람들의 풀이를 보니 생각보다 큐를 사용을 잘 안하더라고.


우선순위 큐 : 우선순위 변경하기

우선 주어진 문제에서는 알파벳을 내림차순 해야한다.
그러나 우선순위 큐에서는 기본적으로 올림차순이다.
즉, 작은 수가 먼저 poll된다. 그러므로 이 우선순위를 바꿔줘야 한다.

PriorityQueue<Character> queueS = new PriorityQueue<>(Comparator.reverseOrder());

우선순위 큐 기본 생성 코드에서 (Comparator.reverseOrder())만 추가해주면 된다.
말 그대로 우선순위를 reverse한다는 것.

이렇게 우선순위를 뒤집어서 생성한 후, 주어진 문자열에서 각 문자들을 넣고, 순서대로 poll해서 answer에 넣어주었다.
그럼 자동으로 내림차순 정렬되어 나온다.


문자열-문자 관련 메서드 정리

문자열 추가

  1. '+'
  2. concat()
    originalString.concat(appendString)

가장 뒤에 위치한 문자 찾기

  1. substring()
    originalString.substring(originalString.length() - 1);
  2. charAt()
    originalString.charAt(originalString.length()-1);
profile
Developer's Logbook

0개의 댓글