PS/문제 풀이

[프로그래머스/Swift] 42746번 - 가장 큰 수

시르베어 2025. 2. 11. 11:51

문제

https://school.programmers.co.kr/learn/courses/30/lessons/42746

풀이

  • 문제가 숫자로 되어 있지만 사실상 사전 정리 하는 문제
  • 사전에서 A는 B보다 먼저 나오고 AA보다 먼저 나온다
  • 따라서 해당 문제는 String 정렬을 이용하면 된다
  • 주의점은 단순히 $0와 $1를 비교하는 것이 아닌 $0 + $1 와 $1 + $0을 비교하는 것이다

전체코드

import Foundation

func solution(_ numbers:[Int]) -> String {
    let numbers: [String] = numbers.map{ String($0) }.sorted{ $0+$1 > $1+$0 }
    if numbers[0] == "0" { return "0" }
    return numbers.reduce(into: ""){ $0 += $1 }
}

 


풀고 난 후

문제를 풀때 처음 선택한 방법은 이 방식이 아닌 숫자의 자리 수를 맞춰주는 방식을 골랐었다.

몇가지 숫자를 골라서 했을때 진행이 되길래 이건가? 해서 시도했으나 전제가 틀린, 오답을 골랐던것이다….

 

1시간 정도 풀어본 후 다른 사람들의 질문과 답변을 보면서 풀이를 알게되었다

 

문제 코드를 작성하기 전에 좀 더 생각하면서 풀자