ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 31. 문자열 내 마음대로 정렬하기
    코딩 테스트/Level 1 2019. 10. 29. 23:44
    반응형

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

     

    파이썬

    def solution(strings, n):
        return sorted(sorted(strings), key = lambda x : x[n])

    자바스크립트

    function solution(strings, n) {
        return strings.sort((a,b)=>a[n]==b[n]?a.localeCompare(b):a[n].localeCompare(b[n]))
    }

    자바

    import java.util.*;
    
    class Solution {
        public String[] solution(String[] strings, int n) {
            Arrays.sort(strings, (s1, s2) -> (s1.charAt(n) == s2.charAt(n)) ? s1.compareTo(s2) : Character.compare(s1.charAt(n), s2.charAt(n)));
            return strings;
        }
    }
    
    /*
    테스트 1 〉	통과 (2.51ms, 51.8MB)
    테스트 2 〉	통과 (2.95ms, 52.7MB)
    테스트 3 〉	통과 (2.45ms, 51.8MB)
    테스트 4 〉	통과 (2.25ms, 52.1MB)
    테스트 5 〉	통과 (2.58ms, 52.4MB)
    테스트 6 〉	통과 (2.68ms, 52.5MB)
    테스트 7 〉	통과 (2.32ms, 50.1MB)
    테스트 8 〉	통과 (2.87ms, 50.7MB)
    테스트 9 〉	통과 (2.33ms, 52MB)
    테스트 10 〉	통과 (2.87ms, 52.3MB)
    테스트 11 〉	통과 (2.15ms, 50.5MB)
    테스트 12 〉	통과 (3.08ms, 54.1MB)
    */

    코틀린

    코틀린 코테에 자바 라이브러리를 불러오는 건 애매한 느낌? 

    import java.util.*
    
    class Solution {
        fun solution(strings: Array<String>, n: Int): Array<String> {
            Arrays.sort(strings) { s1, s2 -> if (s1[n] == s2[n]) s1.compareTo(s2) else s1[n].compareTo(s2[n]) }
            return strings
        }
    }
    
    /*
    테스트 1 〉	통과 (3.23ms, 59.5MB)
    테스트 2 〉	통과 (2.82ms, 59.1MB)
    테스트 3 〉	통과 (3.17ms, 59.1MB)
    테스트 4 〉	통과 (3.31ms, 57.3MB)
    테스트 5 〉	통과 (3.28ms, 59.4MB)
    테스트 6 〉	통과 (3.22ms, 59MB)
    테스트 7 〉	통과 (3.28ms, 57.4MB)
    테스트 8 〉	통과 (4.75ms, 57.2MB)
    테스트 9 〉	통과 (4.93ms, 59.4MB)
    테스트 10 〉	통과 (3.47ms, 57MB)
    테스트 11 〉	통과 (3.40ms, 59MB)
    테스트 12 〉	통과 (3.33ms, 59.2MB)
    */

    보긴 깔끔한데 너무 느립니다.

    class Solution {
        fun solution(strings: Array<String>, n: Int): Array<String> {
            return strings.sorted().sortedBy { it[n] }.toTypedArray()
        }
    }
    
    /*
    테스트 1 〉	통과 (28.36ms, 63MB)
    테스트 2 〉	통과 (28.60ms, 63MB)
    테스트 3 〉	통과 (27.87ms, 62.8MB)
    테스트 4 〉	통과 (22.77ms, 62.8MB)
    테스트 5 〉	통과 (24.80ms, 60.7MB)
    테스트 6 〉	통과 (28.35ms, 62.4MB)
    테스트 7 〉	통과 (27.57ms, 60.4MB)
    테스트 8 〉	통과 (26.55ms, 60.4MB)
    테스트 9 〉	통과 (27.48ms, 60.7MB)
    테스트 10 〉	통과 (26.53ms, 60.2MB)
    테스트 11 〉	통과 (26.11ms, 62.7MB)
    테스트 12 〉	통과 (23.78ms, 62.6MB)
    */

    sortedWith. 조금 나아지긴 했지만... 여전히 느리네요.. >﹏<

    class Solution {
        fun solution(strings: Array<String>, n: Int): Array<String> {
            return strings.sortedWith(Comparator<String> { s1, s2 ->
                if (s1[n] == s2[n]) s1.compareTo(s2) else s1[n].compareTo(s2[n])
            }).toTypedArray()
        }
    }
    
    /*
    테스트 1 〉	통과 (13.58ms, 60.3MB)
    테스트 2 〉	통과 (18.78ms, 60.4MB)
    테스트 3 〉	통과 (20.04ms, 58.6MB)
    테스트 4 〉	통과 (16.48ms, 60.4MB)
    테스트 5 〉	통과 (15.32ms, 62.1MB)
    테스트 6 〉	통과 (17.86ms, 60.2MB)
    테스트 7 〉	통과 (19.49ms, 60.3MB)
    테스트 8 〉	통과 (14.91ms, 60.2MB)
    테스트 9 〉	통과 (20.11ms, 60.3MB)
    테스트 10 〉	통과 (17.43ms, 62.7MB)
    테스트 11 〉	통과 (19.51ms, 58.4MB)
    테스트 12 〉	통과 (14.40ms, 62.5MB)
    */

    import "sort"
    
    func solution(strings []string, n int) []string {
    	sort.Slice(strings, func(i, j int) bool {
    		if strings[i][n] == strings[j][n] {
    			return strings[i] < strings[j]
    		}
    		return strings[i][n] < strings[j][n]
    	})
    	return strings
    }

    C#

    using System.Linq;
    
    public class Solution
    {
        public string[] solution(string[] strings, int n) =>
            strings.ToList().OrderBy(x => x).OrderBy(x => x[n]).ToArray();
    }
    
    /*
    
    테스트 1 〉	통과 (15.40ms, 54.8MB)
    테스트 2 〉	통과 (15.81ms, 53MB)
    테스트 3 〉	통과 (16.41ms, 58.6MB)
    테스트 4 〉	통과 (16.39ms, 56.8MB)
    테스트 5 〉	통과 (15.05ms, 56.8MB)
    테스트 6 〉	통과 (16.11ms, 54.4MB)
    테스트 7 〉	통과 (15.38ms, 56.7MB)
    테스트 8 〉	통과 (15.40ms, 54.6MB)
    테스트 9 〉	통과 (15.60ms, 54.7MB)
    테스트 10 〉	통과 (16.22ms, 59.4MB)
    테스트 11 〉	통과 (15.52ms, 56.8MB)
    테스트 12 〉	통과 (16.30ms, 57.3MB)
    */
    반응형
Designed by Tistory.