샘성의 iOS 개발 일지

[코딩테스트 입문] 피자 나눠먹기 (2) 본문

Algorithm/프로그래머스

[코딩테스트 입문] 피자 나눠먹기 (2)

SamusesApple 2023. 5. 3. 15:03
728x90

문제 설명:

  머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.

 

 

 

내 풀이: 

 

  우선, 최소공배수와 최대공약수를 구할 수 있는지를 확인하는 문제 같았다.

// 최대공약수 구하는 함수
func gcd(_ a: Int, _ b: Int) -> Int {
	// b가 0이 된다면(나누어떨어진다면) a가 최대공약수 / 나누어떨어지지 않으면 재귀함수를 통해 나누어떨어질때까지 실행
    let result = b == 0 ? a : gcd(b, a % b)
    return result
}

// 최대공약수를 통해 최소공배수 구하는 함수
func lcm(_ a: Int, _ b: Int) -> Int {
	// 두 수의 곱 / 최대공약수 == 최소공배수
    return a * b / gcd(a, b)
}


func solution(_ n:Int) -> Int {
	// 구하려는 것은 피자 '몇 판'인지 이므로 최소공배수 나누기 6
    return lcm(n, 6) / 6
}

 

 

회고: 

 최대공약수와 최소공배수를 사용하는 것은 알았지만, 능숙하게 풀지는 못했던 것 같다. 다시 한번 풀이 방법을 고민할 필요가 있어보인다.

728x90