문제 번호 | 문제 이름 | 이유 |
---|---|---|
21275 | 폰 호석만 | 어떤 방식으로 풀지 고민이 필요 |
22943 | 수 | 입력 K를 받아 어떤 식으로 수를 만들지 고민 중 |
문제 자체는 어렵지 않다.
하지만 최대 공약수와 최소 공배수를 기반으로 풀어야 하는 문제가 많았기에 선정했다.
눈 감고도 작성이 가능해야 한다.
보통 재귀함수를 사용하는 데 혹시 모르니 재귀함수가 아닌 방식도 한번씩 구현해보면 좋을 것 같다.
import Foundation
func gcd(_ a:Int, _ b:Int) -> Int {
if(b == 0) {
return a
} else {
return gcd(b, a%b)
}
}
func lcm(_ a:Int, _ b:Int) -> Int {
return a * b / gcd(a,b)
}
let input = readLine()!.components(separatedBy: " ").map { Int($0)! }
print(gcd(input[0], input[1]))
print(lcm(input[0], input[1]))
그리디 알고리즘의 기본적인 문제
그리디 알고리즘은 가장 기본 알고리즘이자 코딩테스트에 자주 등장하는 단골 문제이다.
문제를 잘 파악하는 것이 중요하다.