본문 바로가기

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

[Day5-3] 주사위 게임 2

문제

 

내 정답 코드

import Foundation

func solution(_ a:Int, _ b:Int, _ c:Int) -> Int {
    
    if a == b && b == c {
        return (a + b + c) * (double(num: a) + double(num: b) + double(num: c)) * (triple(num: a) + triple(num: b) + triple(num: c))
    } else if a == b || b == c || a == c {
        return (a + b + c) * (double(num: a) + double(num: b) + double(num: c))
    } else {
        return a + b + c
    }
}

func double(num: Int) -> Int {
    return num * num
}

func triple(num: Int) -> Int {
    return num * num * num
}

 

#

1. 여러개의 조건문을 통해 계산하였는데 하면서 더 좋은 방법이 있을 것 같다고 생각했다.

 

다른 사람들의 풀이를 참고하였는데 Set 구조를 사용하면 중복된 요소를 제외하고 count를 알아낼 수 있었다.
Set이 무슨 친구인지는 알고 있었지만 이렇게 사용할 생각은 못했는데 좋은 방법인 것 같다.

import Foundation

func solution(_ a:Int, _ b:Int, _ c:Int) -> Int {
    
    let count = Set([a, b, c]).count
    
    if count == 3 {
        return a + b + c
    } else if count == 2 {
        return (a + b + c) * (double(num: a) + double(num: b) + double(num: c))
    } else {
        return (a + b + c) * (double(num: a) + double(num: b) + double(num: c)) * (triple(num: a) + triple(num: b) + triple(num: c))
    }
    
    return 0
}

func double(num: Int) -> Int {
    return num * num
}

func triple(num: Int) -> Int {
    return num * num * num
}

배운 기술

 

Set

https://developer.apple.com/documentation/swift/set

 

Set | Apple Developer Documentation

An unordered collection of unique elements.

developer.apple.com