티스토리 뷰

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

문제 설명

문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.

 

제한 조건

  • strings는 길이 1 이상, 50이하인 배열입니다.
  • strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
  • strings의 원소는 길이 1 이상, 100이하인 문자열입니다.
  • 모든 strings의 원소의 길이는 n보다 큽니다.
  • 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.

 

 

 

문제 풀이

1. sorted 메소드의 클로져를 활용해서 문제 조건을 완성해준다.

 

2. 제한 조건의 마지막 "인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다." 의 조건문을 작성해주어야 한다. (이거 작성 안해서 처음에 실패했다.)

 

 

코드

1차 실패

func solution(_ strings:[String], _ n:Int) -> [String] {
    
    var result = strings.sorted(by: { 
        $0[$0.index($0.startIndex, offsetBy: n)] < $1[$1.index($1.startIndex, offsetBy: n)] 
    })    
    return result
    
}

 

성공

func solution(_ strings:[String], _ n:Int) -> [String] {  

    let result = strings.sorted(by: {
        if ($0[$0.index($0.startIndex, offsetBy: n)] == $1[$1.index($1.startIndex, offsetBy: n)])
        {
            return $0 < $1
        } else {
      return $0[$0.index($0.startIndex, offsetBy: n)] < $1[$1.index($1.startIndex, offsetBy: n)]
        }
    })
    
    return result
}

 

 

 

후기

처음에 문제를 꼼꼼히 읽지 않아 실패했다.

코딩테스트 1번 문제를 틀리는 건 수능 수학 2점짜리를 틀리는 것과 같다.

아무리 쉬운 문제로 보여도 문제를 꼼꼼이 읽고 조건을 다 확인해야한다.

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함