-
20.8 심사문제 5와 7의 배수, 공배수 처리하기(입력값)코딩도장 심사문제모음 2020. 10. 9. 23:28728x90
표준 입력으로 정수 두 개가 입력됩니다(첫 번째 입력 값의 범위는 1~1000, 두 번째 입력 값의 범위는 10~1000이며 첫 번째 입력 값은 두 번째 입력 값보다 항상 작습니다). 첫 번째 정수부터 두 번째 정수까지 숫자를 출력하면서 5의 배수일 때는 'Fizz', 7의 배수일 때는 'Buzz', 5와 7의 공배수일 때는 'FizzBuzz'를 출력하는 프로그램을 만드세요(input에서 안내 문자열은 출력하지 않아야 합니다).
사용된 코드
1. map
2. int
3. input
4. for 문
5. if 문
6. range
7. and
8. split
첫 접근 방법
% 나머지 연산자로 인해 쉽게 답을 구할 수 있었다.
난이도는 하 정도이지만
문자열 * bool을 통해 print 단 1줄로 단축이 가능하다.
단축하는게 어렵지는 않지만, 너무 코드를 단축할 경우 협업시 업무에 에로사항이 있으니 유동적으로 단축시키자.
풀이
1. 정수의 입력값 2가지를 받아야 함으로 아래 코드로 2가지 값을 입력받는다.
a, b = map(int, input().split())
2. for 문에서 새로운 변수 i를 정하고 range(시작, 끝+1) 을 이용해 a ~ b 까지 반복함을 범위를 지정해준다.
for i in range(a, b+1):
3. 먼저 5와 7의 공배수를 판별해 줘야한다.
(5와 7의 공배수를 하단 코드에 작성할 경우 공배수를 판별하기도 전에 출력되버리므로 순서에 유의하자.
if i % 5 == 0 and i % 7== 0 :
4. 들여쓰기에 유의하고 5의 배수와 7의 배수를 판별하고 출력하면 끝.
elif i % 5 == 0 :
print('Fizz')
elif i % 7 == 0 :
print('Buzz')
else:
print(i)더보기a, b = map(int, input().split())
for i in range(a, b+1):
if i % 5 == 0 and i % 7== 0 :
print('FizzBuzz')
elif i % 5 == 0 :
print('Fizz')
elif i % 7 == 0 :
print('Buzz')
else:
print(i)추가, 코드 단축 답안
위에서 언급하였듯 문자열 * bool 을 이용 코드를 단축해보았다.
언제나 항상 코드를 단축하는것이 중요한것은 아니다.
FizzBuzz 문제는 프로그래밍 실력을 보는것이 아닌 이해력을 보는 문제로 프로그래밍 면접에 자주 출제된다.
프로그래밍 실력보다는 요구 사항에 대한 이해력이 가장 중요하다는 점을 잊지말자
(무조건 코드가 짧다고 해서 좋은 것은 아닌 것 같다. 융통성있게 적용해보자)
공배수 TIL.1 참고https://codermun-log.tistory.com/4?category=895182
더보기a, b = map(int, input().split())
for i in range(a, b+1):
print('Fizz' * (i % 5 == 0) + 'Buzz' * (i % 7 == 0) or i)※ 실제 코딩 도장의 해법과 다를 수 있으며, 답은 여러가지가 존재합니다.
코딩 지적 정말 감사히 받겠습니다.
※ 접은글 클릭 감사합니다.
728x90'코딩도장 심사문제모음' 카테고리의 다른 글
23.7 지뢰찾기(어려움..) (0) 2020.10.18 23.6 연습문제 3차원 리스트 만들기 (0) 2020.10.15 22.10 심사문제 2의 거듭제곱 리스트 생성하기 (0) 2020.10.14 21.6 심사문제 별 그리기(터틀 그래픽스) (0) 2020.10.12 19.6 심사문제 역삼각형 모양 별출력 (0) 2020.10.08