티스토리 뷰

Algorithm

Algorithm) Programmers- 가장 큰 수 swift

행복하고 싶은 사람 2022. 10. 28. 14:53

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제에 이런 조건이 있어서 어 String으로 바꾼다음에 정렬하면 쉽게 풀수 있겠는데? 하고 생각했습니다만

 

아니었습니다..\ 

그냥 정렬하는 경우에는 453, 45를 정렬할때 45345가 되는데 45가 먼저오는 45453이 더 크게됩니다. 그래서 더 긴 문자열이 짧은 문자열을 가지고 긴 문자열의 맨 마지막 숫자가 짧은 문자열의 맨 처음 숫자보다 클때, 작을때 이렇게 나눠서 처리해줬는데 실패였습니다.

[0,0,0,0] 이런 예외 케이스도 있더라구요 시간도 문제고..

도저히 생각이 안나서 구글링해본 결과 문자열을 두개씩 합해서 정렬하는 방법을 사용하시더라구요 .. 참고해서 풀어봤습니다

나중에 다시 풀어봐야할 문제로 선정하겠습니다

import Foundation

func solution(_ numbers: [Int]) -> String {
    var strs = numbers.map({String($0)})
    strs.sort {
        return $0 + $1 > $1 + $0
    }
    if strs.count > 1, strs[0] == "0" {
        return "0"
    }
    return strs.joined()
}

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
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
글 보관함