# 코사인으로 풀어보는 FizzBuzz 문제: 초보자를 위한 쉽고 재미있는 접근법

---

# # 📌 서론 – 왜 FizzBuzz인가?

프로그래밍 입문자라면 **FizzBuzz** 문제를 들어본 적이 있을 겁니다.

숫자를 1부터 차례대로 출력하면서 3의 배수는 “Fizz”, 5의 배수는 “Buzz”, 15의 배수는 “FizzBuzz”로 바꾸는 아주 간단한 과제죠.

하지만 이 간단함 속에 숨은 **알고리즘 사고력**을 키우는 좋은 연습문제라는 점, 그리고 **코사인 함수** 같은 수학적 도구를 활용해 새로운 시각으로 풀어볼 수 있다는 점을 알고 계셨나요?

이번 포스트에서는 코사인 함수를 이용해 FizzBuzz를 구현하는 방법을 단계별로 설명하고, 직접 파이썬 코드를 작성해 보는 과정을 통해 **프로그래밍 기초**와 **수학적 사고**를 동시에 강화해 보겠습니다.

---

# # 🧩 본론

## # 1️⃣ FizzBuzz 기본 로직 이해하기

먼저 전통적인 방법을 복습합니다.

```
python

for i in range(1, 101):

    if i % 15 == 0:

        print('FizzBuzz')

    elif i % 3 == 0:

        print('Fizz')

    elif i % 5 == 0:

        print('Buzz')

    else:

        print(i)

```

위 코드는 **모듈러 연산**(`%`)을 이용해 배수를 판별합니다. 초보자에게는 직관적이지만, 연산이 여러 번 일어나기 때문에 “수학적 트릭”을 적용하면 더 간결하게 만들 수 있습니다.

---

## # 2️⃣ 코사인 함수로 배수 판별하기

코사인 함수 `cos(θ)`는 각도가 π(파이)의 배수일 때 `-1` 혹은 `1` 값을 가집니다. 이를 이용해 3·n, 5·n, 15·n을 판별하는 아이디어는 다음과 같습니다.

- `cos(π * i / 3)` : i가 3의 배수이면 `cos` 값이 `-1`이 됩니다.

- `cos(π * i / 5)` : i가 5의 배수이면 `-1`.

- 두 값을 곱하면 15의 배수는 `1`이 되고, 나머지는 `-1` 혹은 다른 값이 됩니다.

이를 파이썬 `math` 모듈의 `cos`와 `round` 함수를 활용해 구현하면 다음과 같습니다.

```
python

import math

def fizzbuzz_cosine(n):

    c3  = round(math.cos(math.pi * n / 3))   # 3의 배수면 -1, 아니면 1

    c5  = round(math.cos(math.pi * n / 5))   # 5의 배수면 -1, 아니면 1

    c15 = round(math.cos(math.pi * n / 15))  # 15의 배수면 -1, 아니면 1

    if c15 == -1:          # 15의 배수

        return 'FizzBuzz'

    elif c3 == -1:         # 3의 배수

        return 'Fizz'

    elif c5 == -1:         # 5의 배수

        return 'Buzz'

    else:

        return str(n)

```

> **핵심 포인트**

> - `cos` 함수는 부동소수점 연산이므로 `round` 로 반올림해 `-1` 혹은 `1`을 명확히 구분합니다.

> - `c15`를 먼저 검사하면 **FizzBuzz**가 우선 출력됩니다.

---

## # 3️⃣ 전체 실행 예시와 결과 확인

```
python

for i in range(1, 31):

    print(fizzbuzz_cosine(i))

```

출력은 기존 구현과 동일합니다.

```

1
2

Fizz

4
Buzz

Fizz

7
8

Fizz

Buzz

11

Fizz

13

14

FizzBuzz

...

```

코사인 기반 구현은 **연산 횟수**가 거의 동일하지만, **수학적 아름다움**을 느낄 수 있다는 점이 매력입니다. 또한, `if-elif-else` 구조를 그대로 유지하므로 초보자도 쉽게 이해할 수 있습니다.

---

## # 4️⃣ SEO 키워드 활용 팁

블로그 글을 검색 엔진에 최적화하려면 **키워드**를 자연스럽게 배치해야 합니다. 이번 포스트에 포함된 3가지 SEO 키워드는 다음과 같습니다.

1. **FizzBuzz** – 문제 자체와 파이썬 구현을 설명할 때 반복 사용.

2. **코사인 함수** – 수학적 접근법을 소개하는 핵심 용어.

3. **파이썬 구현** – 코드 예시와 함께 구체적인 언어명을 강조.

키워드가 들어간 문장을 적절히 배치하면 검색 노출이 향상됩니다.

---

# # 🚀 결론 – 직접 구현해보고 나만의 변형 만들기

코사인 함수를 활용한 FizzBuzz는 단순히 문제를 푸는 것을 넘어 **수학과 프로그래밍을 연결**하는 좋은 연습이 됩니다.

1. 위 코드를 복사해 로컬 환경에 붙여넣고 실행해 보세요.

2. `cos` 대신 `sin`이나 `tan`을 써도 같은 원리로 구현이 가능한지 실험해 보세요.

3. 결과를 콘솔이 아닌 웹 페이지나 GUI 애플리케이션으로 시각화하면 더욱 흥미로운 프로젝트가 됩니다.

> **도전 과제**: 7·n, 11·n 같은 새로운 배수 규칙을 추가하고, 코사인 대신 다른 삼각함수를 조합해 보세요.

프로그래밍 실력도, 수학적 감각도 한 단계 업그레이드된 당신을 기대합니다!

---

**관련 링크**: [Solving Fizz Buzz with Cosines (Reddit)](https://reddit.com/r/programming/comments/1p2su50/solving_fizz_buzz_with_cosines/)

궁금한 점이나 직접 만든 변형 코드가 있다면 댓글로 공유해 주세요. 함께 배우고 성장하는 커뮤니티가 되길 바랍니다. 🎉
