Skip to main content

코사인으로 푸는 FizzBuzz 문제 – 초보자도 바로 따라 할 수 있는 파이썬 구현

Published 3 min readMarkdown

# 📌 서론: 왜 FizzBuzz인가?

프로그래밍 입문자라면 FizzBuzz 문제를 한 번쯤은 들어봤을 겁니다.

1부터 100까지 숫자를 출력하되,

  • 3의 배수 → “Fizz”

  • 5의 배수 → “Buzz”

  • 15의 배수 → “FizzBuzz”

를 대신 출력하는 아주 간단한 과제죠.

하지만 이 간단함 뒤에는 조건문과 모듈러 연산을 연습할 수 있는 좋은 학습 재료가 숨겨져 있습니다.

이번 포스트에서는 기존 방법을 넘어 코사인 함수(cosine)를 이용해 같은 결과를 만드는 수학적 트릭을 소개합니다.

SEO 키워드: 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)
  • i % n 은 i가 n의 배수인지를 판단하는 가장 직관적인 방법입니다.

  • 초보자에게는 이해가 쉽지만, 매번 세 번의 나눗셈을 수행한다는 점을 기억해 주세요.


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

# 2.1 코사인 함수의 특성

코사인 함수 cos(θ)는 θ가 π(파이)의 정수배일 때 ±1 값을 가집니다.

이를 이용하면 다음과 같은 식을 만들 수 있습니다.

  • cos(π * n / 3) → n이 3의 배수이면 cos 값은 -1

  • cos(π * n / 5) → n이 5의 배수이면 -1

부동소수점 연산 특성상 -1 근처의 값이 나오므로 round() 로 반올림해 -1 혹은 1 로 구분합니다.

# 2.2 파이썬 코드 예시

python

import math

def fizzbuzz_cosine(n: int) -> str:

    # 코사인 값은 -1 혹은 1에 가깝다 → round 로 정수화

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

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

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

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

        return 'FizzBuzz'

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

        return 'Fizz'

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

        return 'Buzz'

    else:

        return str(n)
  • c15 를 가장 먼저 검사하면 FizzBuzz 가 우선 출력됩니다.

  • c3, c5 순서대로 검사하면 각각 Fizz, Buzz 가 출력됩니다.

# 2.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

...

# 3️⃣ 왜 코사인을 사용해야 할까?

| 장점 | 설명 |

|------|------|

| 수학적 아름다움 | 삼각함수를 활용해 조건을 판별하므로, 프로그래밍과 수학이 만나는 재미를 느낄 수 있다. |

| 조건문 수 감소 | if‑elif‑else 구조는 그대로 유지하지만, 모듈러 연산을 없앨 수 있다. |

| 학습 확장성 | 코사인 외에도 sin, tan 등을 조합해 다양한 패턴을 만들 수 있다. |

실제 성능 차이는 미미하지만, 코드에 새로운 아이디어를 도입하고 싶을 때 좋은 연습이 됩니다.


# 4️⃣ 초보자를 위한 팁

  1. round() 를 꼭 사용하세요

    코사인은 부동소수점 오차가 있기 때문에 round() 로 -1 혹은 1 로 명확히 구분해야 합니다.

  2. math 모듈을 미리 임포트

    import math 를 빼먹으면 NameError 가 발생합니다.

  3. 디버깅 시 print 로 값 확인

python

   print(n, c3, c5, c15)   # 각 배수 판별 결과 확인

이렇게 하면 어떤 숫자가 어떤 배수로 인식되는지 바로 알 수 있습니다.

  1. 다른 언어에도 적용해 보기

    JavaScript, Java, C# 등에서도 Math.cos 와 Math.PI 를 이용하면 동일한 로직을 구현할 수 있습니다.


# 🚀 결론 – 코사인으로 만든 FizzBuzz, 이제 직접 실행해 보세요!

  • FizzBuzz 라는 기본 문제를 코사인 함수로 풀어보면서 프로그래밍과 수학이 어떻게 결합되는지 체험했습니다.

  • 초보자도 파이썬 구현 예제를 따라 하면 바로 동작하는 코드를 만들 수 있습니다.

  • 마지막으로, 조건 판단에 다양한 수학 함수를 적용해 보는 연습을 하면 알고리즘 사고력이 크게 향상됩니다.

행동 유도: 오늘 당장 위 코드를 복사해 파이썬 인터프리터에 붙여넣고 실행해 보세요. 그리고 직접 sin 혹은 tan 으로 변형해 보는 실험을 통해 자신만의 “수학‑코딩” 레시피를 만들어 보시길 바랍니다! 🎉

No comments yet. Be the first to comment.

More from this blog