본문 바로가기

알고리즘 & 문제풀이

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

설계

정해진 규칙 함수화

배열 sort하여 반환

git : 문자열 내 마음대로 정렬하기

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12915?language=swift


문제 풀이

정해진 index에 대해 값을 비교하며, 같은 경우 원본 String을 사전순 비교하는 sortByRule 함수 작성

sorted를 활용해 주어진 규칙에 정렬하여 반환

import Foundation

func solution(_ strings:[String], _ n:Int) -> [String] {
    return strings.sorted{ front, back in
        return sortByRule(front, back, n)
    }
}

func sortByRule(_ firstString: String, _ secondsString: String, _ index: Int) -> Bool {
    
let firstIndexString = String(Array(firstString)[index])
let secondsIndexString = String(Array(secondsString)[index])
    
    if(firstIndexString == secondsIndexString) {
        return firstString < secondsString
    }
    else {
        return firstIndexString < secondsIndexString
    }
}

다른 사람 풀이 분석

프로그래머스 - 전대식 , 김지훈 , 천수빈 외 42 명

func solution(_ strings:[String], _ n:Int) -> [String] {
    return strings.sorted{  Array($0)[n] == Array($1)[n] ? $0 < $1 :  Array($0)[n] < Array($1)[n] }
}

∙ 정해진 규칙을 sorted 내부 클로져에서 구현하여 전달

∙ ? , : 구문의 활용

정리

∙ 문제를 잘 읽어 주어진 조건에 알맞게 구현을 하자!