코사인으로 푸는 FizzBuzz 문제 – 초보자도 바로 따라 할 수 있는 파이썬 구현
# 📌 서론: 왜 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값은-1cos(π * 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️⃣ 초보자를 위한 팁
round()를 꼭 사용하세요코사인은 부동소수점 오차가 있기 때문에
round()로-1혹은1로 명확히 구분해야 합니다.math모듈을 미리 임포트import math를 빼먹으면NameError가 발생합니다.디버깅 시
print로 값 확인
python
print(n, c3, c5, c15) # 각 배수 판별 결과 확인
이렇게 하면 어떤 숫자가 어떤 배수로 인식되는지 바로 알 수 있습니다.
다른 언어에도 적용해 보기
JavaScript, Java, C# 등에서도
Math.cos와Math.PI를 이용하면 동일한 로직을 구현할 수 있습니다.
# 🚀 결론 – 코사인으로 만든 FizzBuzz, 이제 직접 실행해 보세요!
FizzBuzz 라는 기본 문제를 코사인 함수로 풀어보면서 프로그래밍과 수학이 어떻게 결합되는지 체험했습니다.
초보자도 파이썬 구현 예제를 따라 하면 바로 동작하는 코드를 만들 수 있습니다.
마지막으로, 조건 판단에 다양한 수학 함수를 적용해 보는 연습을 하면 알고리즘 사고력이 크게 향상됩니다.
행동 유도: 오늘 당장 위 코드를 복사해 파이썬 인터프리터에 붙여넣고 실행해 보세요. 그리고 직접
sin혹은tan으로 변형해 보는 실험을 통해 자신만의 “수학‑코딩” 레시피를 만들어 보시길 바랍니다! 🎉
Comments
Join the discussionNo comments yet. Be the first to comment.