본문 바로가기

알고리즘

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

반응형

출처 : programmers.co.kr/learn/courses/30/lessons/12917

 

코딩테스트 연습 - 문자열 내림차순으로 배치하기

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

programmers.co.kr

문제 설명

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

제한 사항

  • str은 길이 1 이상인 문자열입니다.

입출력 예

s                                                                       return

Zbcdefg gfedcbZ

 풀이 & 알게된 문자열 메소드

  1. string str[] = s.split("");
    --> 한 글자를 구분자로 하는 str 스트링 배열 선언
  2. Arrays.sort(str);  
    --> 한 글자씩 오름차순 정렬
  3. Collections.reverse( Arrays.asList( str ) ) ; // == Arrays.sort( str, Collections.reverseOrder());
    1) str --> 리스트로 변환
    2) Collections.reverse 메소드를 통해 내림차순 정렬 == 리스트만 가능한듯.
  4. String.join("",str);
    --> str 배열에 있는 각각의 갑들을 ""을 구분자로 스트링에 추가
    ex. String.join( ",", 배열 ) ;
    "바나나,사과,망고" 처럼 스트링에 추가된다.
  5. equals 메소드
    --> 일반적으로 주소 값을 비교하지만,
    --> 문자열.equals("") 하면 문자열 값을 비교하게 된다.

  6. String 은 오브젝트 형식 

 코드

import java.util.*;
 
class Solution {
  public String solution(String s) {
      String answer = "";
      
      String str[] = s.split("");
      // 1. 오름차순 정렬
      Arrays.sort(str);
     
      /*
      
        Arrays.sort(배열)은 오름차순 정렬로 만들어 주는 것이고,2. 
        Collections.reverse(Arrays.asList(배열)); 은 일반 배열을 리스트로 변환해준 뒤
        reverse 메소드를 활용하여 반전시키는 것이다.
        String.join("추가할 문자", 배열); 은 예를 들어 String.join(",",str)이면 
        "바나나,사과,망고" 이런식으로 ','가 추가되어 원소들이 나열된다.

      */
      
       // 2. 역방향 다시 정렬 
      Collections.reverse(Arrays.asList(str));
                 
      return String.join("",str);
  }
}

 

반응형