프로그래머스 LV2. 가장 큰 수
접근 방식
두 수를 어느 순서로 이어 붙여야 더 큰지로 정렬하는 문제. a와 b를 "ab", "ba"로 이어 붙여 정수로 비교하고 큰 쪽을 앞에 둠. 이렇게 하면 자리 수가 달라도 이어 붙였을 때의 크기로 순서가 정해짐.
정렬 후 이어 붙인 결과의 첫 글자가 "0"이면 모든 숫자가 0이라는 뜻이므로 "0"을 반환함. [0, 0, 0] 같은 입력을 처리하는 예외.
코드
//https://programmers.co.kr/learn/courses/30/lessons/42746
import Foundation
struct p42746 {
static func run() {
// print(p42746.solution([6, 10, 2])) // 6210
// print(p42746.solution([3, 30, 34, 5, 9])) // 9534330
print(p42746.solution([0, 0, 0])) // 0
}
static func solution(_ numbers:[Int]) -> String {
// 차례로 앞 두개를 순서를 바꾸어서 이어 붙여보기
var answer = ""
let list = numbers.sorted { Int("\($0)\($1)")! > Int("\($1)\($0)")!}
answer = list.map { "\($0)" }.joined()
if answer.first == "0" { answer = "0" }
return answer
}
}'알고리즘 문제 풀이' 카테고리의 다른 글
| [Swift] BOJ 2156 포도주 시식 (0) | 2022.04.02 |
|---|---|
| [Swift] BOJ 1912 연속합 (0) | 2022.04.02 |
| [Swift] BOJ 1932 정수 삼각형 (0) | 2022.04.01 |
| [Swift] BOJ 11053 가장 긴 증가하는 부분 수열 (0) | 2022.04.01 |
| [Swift] BOJ 2579 계단 오르기 (0) | 2022.04.01 |