코딩 테스트/Level 1

19. 문자열 내림차순으로 배치하기

컴닥 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());
}
반응형