프로그래머스 Lv1. 문자열 내 마음대로 정렬하기

용상윤·2021년 3월 5일
0
post-custom-banner

📌 문제

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


📌 접근

  • js sort(), 문자열 오름차순정렬, 삼항연산자, localeCompare()
  • python key값 기준 정렬

📌 코드

js

function solution(strings, n) {
    return (
        strings.sort((a,b) => {
            if(a[n]==b[n]){
                return (a>b)-(a<b);
            } else {
                return (a[n]>b[n])-(a[n]<b[n]);
            }
        })
    )
}

localeCompare()

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

python

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

✍ 메모

js

return 값을 이용한 오름차순, 내림차순 정렬

const s = ["sun", "bed", "car"]

s.sort()
// ["bed", "car", "sun"] //정렬됨

s.sort((a,b) => a-b)
// ["sun", "bed", "car"] //변화없음

s.sort((a,b) => (a>b)-(a<b))
// ["bed", "car", "sun"] //정렬됨

s.sort((a,b) => a.localeCompare(b))
// ["bed", "car", "sun"] //정렬됨

localeCompare()

MDN
localeCompare() 메서드는 기준 문자열과 비교했을 때 비교 대상 문자열이 정렬상 전에 오는지, 후에 오는지 혹은 같은 순서에 배치되는지를 알려주는 숫자를 리턴합니다.

return 값을 이용한 방법과 비교해보면 localeCompare()의 실행시간이 더 길었음.

var items = ['réservé', 'premier', 'cliché', 'communiqué', 'café', 'adieu'];
items.sort((a, b) => a.localeCompare(b));
// ['adieu', 'café', 'cliché', 'communiqué', 'premier', 'réservé']

python

key 값을 기준으로 정렬

# 요소 길이 순으로 정렬하기
items = ['réservé', 'premier', 'cliché', 'communiqué', 'café', 'adieu']

# 오름차순
sorted(items, key=lambda x: len(x))
# ['café', 'adieu', 'cliché', 'réservé', 'premier', 'communiqué']

# 내림차순
sorted(items, key=lambda x: len(x), reverse=True)
# ['communiqué', 'réservé', 'premier', 'cliché', 'adieu', 'café']
profile
달리는 중!
post-custom-banner

0개의 댓글