-
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) */
반응형