[프로그래머스 LV.0] Swift - 피자 나눠 먹기 (2)

David·2023년 2월 1일
0

알고리즘

목록 보기
2/4
post-thumbnail

안 풀려서 고민하다 보니, 점점 어렵게 생각하게 됐다. 전에 풀었던, 최대공약수를 이용하면 될 것 같은 느낌? 그런데, 바로 풀지는 못해서 이번에도..다른 분의 풀이를 참고하여.. 그래서 최대공약수와 최소공배수 함수를 만들어 풀어보았다.

import Foundation
//최대공약수 gcd 함수
func gcd(_ a:Int, _ b:Int) -> Int {
    if b == 0 {
        return a
    } else {
        return gcd(b, a % b)
    }
}
//최소공배수 lcm 함수
func lcm(_ a:Int, _ b:Int) -> Int {
    return a*b / gcd(a,b)
}

func solution(_ n:Int) -> Int {
    return lcm(n,6) / 6
}

풀고 나서 다른 분의 풀이를 보았는데, 이렇게 풀 수도 있네? 라는 생각이 들었다. while 문을 이용하여 6조각이 한 세트인 a판 피자를 n으로 나누어질 때까지 a를 1부터 카운트 업하는 것이다.

import Foundation

func solution(_ n:Int) -> Int {
// result 변수가 피자의 판 수 
    var result = 1
    while (result * 6) % n != 0 {
        result += 1
    }
    return result
}

다음부터는 문제에 대해 좀 더 고민할 수 있기를!

0개의 댓글