본문 바로가기

프로그래머스 (Swift)/기초

[Day8-2] 주사위 게임3

문제

 

내 정답 코드

import Foundation

func solution(_ a:Int, _ b:Int, _ c:Int, _ d:Int) -> Int {
    
    var numSet:Set<Int> = [a, b, c, d]
    var numSetArr:[Int] = numSet.map { $0 }
    var numArr = [a,b,c,d]
    
    
    switch numSet.count {
    case 1:
        return numArr[0] * 1111
    case 2:
        var (p, q) = (0, 0)
        for num in numSetArr {
            if numArr.filter { num == $0 }.count == 3 {
                p = num
            } else if numArr.filter { num == $0 }.count == 2 {
                p = numSetArr[0]
                q = numSetArr[1]
                return (p+q) * abs(p-q)
            }
            else {
                q = num
            }
        }
        return (p * 10 + q) * (p * 10 + q)
    case 3:
        var (q, r) = (0, 0)
        for num in numSetArr {
            if numArr.filter { num == $0 }.count != 2 {
                if q == 0 {
                    q = num
                }
                else if r == 0 {
                    r = num
                }
            }
        }
        return q*r
    case 4:
        return numSet.min()!
    default:
        break
    }
    
    return 0
}

 

#

1. 여러모로 귀찮은 문제였는데 Set를 이용해서 중복된 수의 개수를 파악했다.

2. 각 수마다 정해진 계산식을 적용하여 문제를 해결하였다.

3. 뭔가 지저분하게 코드를 짠 것 같아 시간이 될 때 간결하게 짜봐야겠다.


배운 기술

 

abs( )

https://developer.apple.com/documentation/swift/abs(_:)

 

abs(_:) | Apple Developer Documentation

Returns the absolute value of the given number.

developer.apple.com