181105_(月) - PassionOfStudy/Algorithm GitHub Wiki

Programmers_(to sort integer in descending order)

x만큼 간격이 있는 n개의 숫자 to sort integer in descending order

My Solution

Int64 -> String -> [Character] -> [String] -> [Int64] -> 내림차순정렬후 -> [Int64] -> [String] -> String -> Int64 정렬을 하기위해서 문자열로 sorted메서드는 Int형 배열에서만 사용가능하다고 생각하고 배열로 나누니 Character형이라 다시 String으로 형변환 그리고 다시 Int64로 변환 후 sorted(by: >)메서드를 이용해서 정렬 후, 정렬된 Int64배열을 joined()메서드를 사용하기위해 다시 String으로 형변환 마지막으로 return형이 Int64이므로 형변환 이런 식으로 풀었다.. (풀어서 얘기하니 너무 복잡하다....)

Other Solution

개인적으로 마음에 들었던 코드는 간단한 코드보다는 다른 타입으로 형변환을 따로하지 않고 수학적인 Logic으로 푼 문제였다.(문제 Other Solution_1(Best)참고) Int64배열에 10으로 나눈 나머지를 각각 저장하고, 정렬한 후, 다시 값을 합칠 때는 for문을 이용해서 1의 자리는 그냥 출력 10의 자리는 10을 곱한 값 100의 자리는 100을 곱한 값 이런식으로 합계를 누적해서 결과를 만든다.

while list.count > 0 {
        answer += Int64(list.removeFirst()) * val
        val *= 10
    }

% 결론적으로 문제는 풀렸지만 너무 쓸데없이 형변환을 많이 했다. sorted()는 문자열에서도 가능하며, joined()메서드를 쓰지 않아도 String()을 이용하면 문자열을 붙여준다.마지막에 옵셔널값은 안전하게 옵셔널바인딩 - if let문을 이용해서 처리하는 것을 습관화하도록 하자.