ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 19. 문자열 내림차순으로 배치하기
    코딩 테스트/Level 1 2019. 10. 17. 23:01
    반응형

    https://programmers.co.kr/learn/courses/30/lessons/12917

     

    파이썬

    간단하게 내장함수(BIF)들을 이용해서 풀었습니다.

    def solution(s):
        return ''.join(sorted(s, reverse=True))

    파이썬을 시작했을 때 작성한 코드입니다. ㅜㅜ

    def solution(s):
        temp_list = []
        for letter in s:
            temp_list.append(letter)
    
        temp_list.sort(reverse=True)
    
        answer = ''
        for each in temp_list:
            answer += each
    
        return answer
    def solution(s):
        temp_list = list(s)  # list() 함수로 문자열을 바로 리스트로 바꿀 수 있다.
        temp_list.sort(reverse=True)
        answer = ''.join(temp_list)  # 문자열에는 join 메서드를 사용할 수 있다.  
        return answer

    sort, sorted의 차이: https://inma.tistory.com/137

    def solution(s):
        temp = list(s)
        temp = sorted(temp, reverse=True)
        answer = ''.join(temp)
        return answer

     

     

    자바스크립트

    함수형으로 풀어보았습니다. 

    간략하게 작성하기 위해 3항 연산자도 사용했습니다. 

    function solution(s) {
        return s.split('').sort((a, b) => (a <= b) ? 1 : -1).join('');
    }

    소트 부분이 어렵다면 이런 풀이도 가능하겠죠?

    O(n)이 추가 되는 단점은 있습니다만 가독성은 좋습니다. 

    function solution(s) {
        return s.split('').sort().reverse().join('');
    }

     

    자바

    특별히 설명할 게 없죠? 문자열을 배열로, 배열을 역정렬하고, 마지막으로 배열을 조인.

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

     

    코틀린

    class Solution {
        fun solution(s: String): String {
            return s.split("").sorted().reversed().joinToString("")
        }
    }

     

    import (
    	"sort"
    	"strings"
    )
    
    func solution(s string) string {
    	text := strings.Split(s, "")
    	sort.Slice(text, func(i, j int) bool {
    		return text[i] > text[j]
    	})
    	return strings.Join(text, "")
    }
    import "sort"
    
    func solution(s string) string {
    	text := []byte(s)
    	sort.Slice(text, func(i, j int) bool { return text[i] > text[j] })
    	return string(text)
    }

     

    C#

    using System;
    
    public class Solution
    {
        public string solution(string s)
        {
            char[] c = s.ToCharArray();
            Array.Sort(c);
            Array.Reverse(c);
            return string.Concat(c);
        }
    }

    Sort와 Reverse를 한번에 처리하는 예를 다른 언어에서 많이 보셨을 겁니다. 
    한 줄 줄였습니다. --; 코뽐에선 한 줄 줄이는 게 나름 자존심이죠.

    using System;
    
    public class Solution
    {
        public string solution(string s)
        {
            char[] c = s.ToCharArray();
            Array.Sort<char>(c, new Comparison<char>((c1, c2) => c2.CompareTo(c1)));
            return string.Concat(c);
        }
    }

    그래서 한줄로 ....

    using System.Linq;
    
    public class Solution
    {
        public string solution(string s) => string.Concat(s.ToCharArray().OrderByDescending(c => c).ToArray());
    }
    반응형
Designed by Tistory.