반응형

안녕하세요. 개발 중인 정주입니다.

 

오늘은 "프로그래머스(Lv.2) - 가장 큰 수" 문제를 풀었습니다.


목차


    Github

     

    GitHub - jeongju9216/SwiftAlgorithm: 스위프트 알고리즘

    스위프트 알고리즘. Contribute to jeongju9216/SwiftAlgorithm development by creating an account on GitHub.

    github.com

     

    문제 링크

     

    코딩테스트 연습 - 가장 큰 수

    0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰

    programmers.co.kr

     


    풀이

    이번 문제는 정렬 문제입니다.

     

    두 개의 정수를 가져와 문자열로 이어 붙였을 때 A + B가 더 큰지, B + A가 더 큰지 체크하여 정렬하면 되는 문제였습니다.

    이때, 가장 큰 "수"를 문자열로 리턴하는 것이기 때문에 0이 연속해서 입력되는 경우 00, 000이 아니라 "0"으로 출력을 해줘야 합니다.

     

    저는 방법이 떠오르지 않아 다른 분의 풀이 방법을 참고해서 해결했는데요.

    처음 봤을 때 풀이 방법이 잘 떠오르지 않는 문제 같습니다.

    스스로 풀지 못한 문제는 1~2주 뒤에 다시 한번 풀어봐야겠습니다.

     


    전체 코드

    
          
    import Foundation
    func solution(_ numbers:[Int]) -> String {
    var numbers = numbers.map { String($0) }.sorted {
    return Int($0 + $1)! > Int($1 + $0)!
    }
    if numbers[0] == "0" {
    return "0"
    }
    return numbers.joined()
    }

    아직은 초보 개발자입니다.

    더 효율적인 코드 훈수 환영합니다!

    공감 댓글 부탁드립니다.

     

     

    반응형
    유정주