코사인으로 풀어보는 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 키워드는 다음과 같습니다.
FizzBuzz – 문제 자체와 파이썬 구현을 설명할 때 반복 사용.
코사인 함수 – 수학적 접근법을 소개하는 핵심 용어.
파이썬 구현 – 코드 예시와 함께 구체적인 언어명을 강조.
키워드가 들어간 문장을 적절히 배치하면 검색 노출이 향상됩니다.
# 🚀 결론 – 직접 구현해보고 나만의 변형 만들기
코사인 함수를 활용한 FizzBuzz는 단순히 문제를 푸는 것을 넘어 수학과 프로그래밍을 연결하는 좋은 연습이 됩니다.
위 코드를 복사해 로컬 환경에 붙여넣고 실행해 보세요.
cos대신sin이나tan을 써도 같은 원리로 구현이 가능한지 실험해 보세요.결과를 콘솔이 아닌 웹 페이지나 GUI 애플리케이션으로 시각화하면 더욱 흥미로운 프로젝트가 됩니다.
도전 과제: 7·n, 11·n 같은 새로운 배수 규칙을 추가하고, 코사인 대신 다른 삼각함수를 조합해 보세요.
프로그래밍 실력도, 수학적 감각도 한 단계 업그레이드된 당신을 기대합니다!
관련 링크: Solving Fizz Buzz with Cosines (Reddit)
궁금한 점이나 직접 만든 변형 코드가 있다면 댓글로 공유해 주세요. 함께 배우고 성장하는 커뮤니티가 되길 바랍니다. 🎉
Comments
Join the discussionNo comments yet. Be the first to comment.