[Python] if, elif, else 조건문을 사용해서 FizzBuzz 인터뷰 문제 풀기
Python 분석과 프로그래밍/Python 프로그래밍 2018. 2. 6. 00:05외국의 블로그에 소프트엔지니어 채용 과정 중에 코딩 인터뷰에서 있을 법한 문제로 회자되는 "FizzBuzz" 문제가 있습니다.
"FizzBuzz"문제는
- 1에서 100까지의 숫자를 출력하되,
- 만약 해당 숫자가 '3'으로 나누어지면 숫자 대신에 "Fizz"를 출력하고,
- 만약 해당 숫자가 '5'로 나누어지면 숫자 대신에 "Buzz"를 출력하며,
- 만약 해당 숫자가 '3'과 '5'로 모두 나누어지면 숫자 대신에 "FizzBuzz"를 출력
하는 코드는 짜라는 것입니다.
1~100까지 하기에는 좀 길기 때문에 1~30까지의 숫자에 대해서만 FizzBuzz 문제를 풀어보면 아래의 Original -> FizzBuzz 변환 전/후 비교를 보시면 이해가 쉬울 것입니다.
위의 FizzBuzz 문제를 푸는 방법이 여러가지가 있을 수 있을 텐데요, (1) if, elif, else 조건문 사용, (2) if, elif, else 조건문을 포함한 사용자 정의 함수, (3) 문자열 합치기 (concatenating strings) 의 세 가지 방법을 소개합니다.
(1) if, elif, else 조건문을 사용한 FizzBuzz 코딩 |
# (1) if, elif, and else for num in range(1, 31): if num % 3 == 0 and num % 5 == 0: print('FizzBuzz') elif num % 3 == 0: print('Fizz') elif num % 5 == 0: print('Buzz') else: print(num)
|
(2) if, elif, else 조건문과 사용자 정의 함수(UDF)을 사용한 FizzBuzz 코딩 |
사용자 정의 함수에 대해서는 조만간 포스팅 하겠습니다. ^^
# (2) User Defined Function def fizzbuzz(num): if num % 3 == 0 and num % 5 == 0: return 'FizzBuzz' elif num % 3 == 0: return 'Fizz' elif num % 5 == 0: return 'Buzz' else: return str(num)
print("\n".join(fizzbuzz(num) for num in range(1, 31)))
|
(3) 문자열 합치기(Concatenating Strings)을 이용한 FizzBuzz 코딩 |
# (3) Concatenating Strings for num in range(1, 31): string = "" if num % 3 == 0: string = string + "Fizz" if num % 5 == 0: string = string + "Buzz" if num % 5 != 0 and num % 3 != 0: string = string + str(num) print(string)
|
아래 링크는 취업 인터뷰에서 FizzBuzz 코딩 문제를 듣고서 Tensorflow로 딥러닝 모형을 적용했다가 취업 실패했다는 (가상의?) 블로그 내용입니다.
Fizz Buzz in Tensorflow (http://joelgrus.com/2016/05/23/fizz-buzz-in-tensorflow/)
간단한 '주먹지르기'로 해결할 수 있는 문제를 단지 '최신 유행'하는 기술이라는 이유만으로 '공중 3회전 날아 뒤돌아 발 차고 손목날로 목 가로지르기' 기술을 적용할 필요가 있는가에 대해서 우스개 (가상?) 사례로 소개한 포스팅인 듯 합니다. Interviewer 의 반응을 유심히 보면서... 인터뷰 과정을 한번 보시는 것도 재미있을 것 같습니다. ㅋㅋ
많은 도움이 되었기를 바랍니다.
이번 포스팅이 도움이 되었다면 아래의 '공감~'를 꾸욱 눌러주세요.