Notice
Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- 코딩테스트입문
- 카카오맵클론
- hackerrank
- AutoLayout
- alamofire
- storekit2
- five lines of cdde
- mrc
- 프로그래머스
- css학습
- algorithm
- 클린코드
- UIKit
- five lines of code
- firestore
- IOS
- RC
- Swift코딩테스트
- 앱의생명주기
- RxSwift
- TDD
- 리팩터링
- ARC
- Di
- ios면접
- unittest
- Safari Inspector
- Swift디자인패턴
- SWIFT
- firebase
Archives
- Today
- Total
샘성의 iOS 개발 일지
[코딩테스트 입문] 피자 나눠먹기 (2) 본문
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
'Algorithm > 프로그래머스' 카테고리의 다른 글
[코딩테스트 입문] 아이스 아메리카노 (0) | 2023.05.05 |
---|---|
[코딩테스트 입문] 옷가게 할인 받기 (0) | 2023.05.04 |
[코딩테스트 입문] 배열의 평균값 (0) | 2023.05.04 |
[코딩테스트 입문] 피자 나눠먹기 (3) (0) | 2023.05.04 |
[코딩테스트 입문] 피자 나눠먹기(1) (0) | 2023.05.03 |