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
- 카카오맵클론
- Swift디자인패턴
- ARC
- RxSwift
- Bubble Search
- 반응형프레임워크
- TDD
- 앱의생명주기
- SWIFT
- ios면접
- IOS
- unittest
- Di
- AutoLayout
- mrc
- hackerrank
- iOS앱 디버깅
- algorithm
- ReactorKit UnitTest
- 코딩테스트입문
- 시험에자주나오는것만
- firestore
- firebase
- RC
- UIKit
- 프로그래머스
- Safari Inspector
- alamofire
- HackersRank
- Swift코딩테스트
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 |