FizzBuzz 문제는 연속되는 문자열을 기반으로 해결하는 문제입니다
- 의 배수이면서 의 배수이면 “FizzBuzz”를 출력합니다. 가
- 의 배수이지만 의 배수가 아니면 “Fizz”를 출력합니다. 가
- 의 배수가 아니지만 의 배수이면 “Buzz”를 출력합니다. 가
- 의 배수도 아니고 의 배수도 아닌 경우 를 그대로 출력합니다. 가
문제를 해결하기 위해서는 위의 조건을 생각하면서 해결하면 쉽습니다.
3의 배수도 아니고 5의 배수도 아니면서 문자열로만 연속된 값을 갖기는 불가능합니다. 예를들어 아래처럼 말이죠
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
그러면 분명 3개의 입력값 중에서 숫자를 포함하고 있을테니 해당 숫자를 포함하고 있는 값을 사용하여 아래처럼 함수를 만들어 쉽게 다음 수를 구할 수 있게 됩니다.
import Foundation
var arr:[String] = ["1", "2", "Fizz"]
var value1 = readLine()!
var value2 = readLine()!
var value3 = readLine()!
func result(n: Int) {
if n % 3 == 0 && n % 5 == 0 {
print("FizzBuzz")
} else if n % 3 == 0 && n % 5 != 0 {
print("Fizz")
} else if n % 3 != 0 && n % 5 == 0 {
print("Buzz")
} else {
print("\(n)")
}
}
if let value = Int(value1) {
let num = value+3
result(n: num)
exit(0)
}
if let value = Int(value2) {
let num = value+2
result(n: num)
exit(0)
}
if let value = Int(value3) {
let num = value+1
result(n: num)
exit(0)
}