Lee's Grow up

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

알고리즘/프로그래머스

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

효기로그 2019. 12. 13. 16:58
반응형

문제 설명


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

제한 사항


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

입출력 예

Sreturn
"Zbcdefg""gfedcbZ"

람다를 활용한 풀이

최근 람다식을 공부하고 있어서 시간날 때 기존의 풀이를 람다로 변경해보는 연습을 진행중입니다.
기존 아래의 코드를 람다식으로 풀어본 결과입니다.

class Solution {
  public String solution(String s) {

      return Stream.of(s.split(""))
                .sorted(Collections.reverseOrder())
                .collect(Collectors.joining());
  }
}

나의 풀이


class Solution {
  public String solution(String s) {

      char[] cArr = s.toCharArray();

      for (int i = 1; i < cArr.length; i++) {    
            for (int j = 0; j < cArr.length; j++) {
                if(cArr[i]>cArr[j]) {
                    char temp = cArr[j];
                    cArr[j] = cArr[i];
                    cArr[i] = temp;
                    i--;
                    break;
                }
            }
        }
      return new String(cArr);
  }
}
풀이 설명

기본적으로 다른사람들은 Arrays.sort() 를 사용해 정렬 후, 리버스 하는 방식으로 풀이를 접근했습니다.
저는 이와 비슷한 문제에서 자주 사용했기 때문에 정렬 자체를 구현해보는게 목적이였습니다.

반응형
Comments