IFP 겨울방학 스터디(Unit 20)

유재우·2022년 1월 16일
0

IFP-겨울방학 스터디

목록 보기
18/38

20.1 1부터 100까지 숫자 출력하기

for i in range(1,101):
    print(i)

20.2 3의 배수일 때와 5의 배수일 때 처리하기

  • 3의 배수와 5의 배수일 때 숫자 대신 'Fizz', 'Buzz'를 출력해보기
for i in range(1,101):
    if i % 3 == 0:
        print('Fizz')
    elif i % 5 == 0:
        print('Buzz')
    else:
        print(i)

20.3 3과 5의 공배수 처리하기

  • 3의 배수와 5의 배수는 출력했지만 3과 5의 공배수를 출력하지는 못했습니다. 3과 5의 공배수는 어떻게 출력해야 할까요? 공배수는 다음과 같이 논리 연산자 and를 사용하면 됩니다.
for i in range(1,101):
    if i % 3 == 0:
        print('Fizz')
    elif i % 5 == 0:
        print('Buzz')
    elif i % 5 == 0 and i % 3 == 0:
        print('Fizz Buzz')
    else:
        print(i)

20.4 논리 연산자를 사용하지 않고 3과 5의 공배수 처리하기

  • 논리 연산자 and를 사용하지 않고 3과 5의 공배수를 검사하려면 어떻게 해야 할 까요? 3 * 5 = 15는 3과 5의 최소공배수이므로 15로 나눴을 때 나머지가 0인 값들은 3과 5의 공배수입니다.
for i in range(1,101):
    if i % 3 == 0:
        print('Fizz')
    elif i % 5 == 0:
        print('Buzz')
    elif i % 15 == 0:
        print('Fizz Buzz')
    else:
        print(i)

코드 단축

  • 앞선 코드를 단축하기
for i in range(1, 101):
    print('Fizz' * (i % 3 == 0) + 'Buzz' * (i % 5 == 0) or i)
문자열과 숫자의 곱셉으로 코드를 단축 할 수 있다.
Fizz * False = False
Buzz * True = 'Buzz'

20.6 퀴즈

  • 다음 중 변수 i가 6의 배수인지 확인하는 방법으로 올바른 것을 고르세요.
  1. i / 6 == 0
  2. i & 6 == 0
  3. i | 6 == 0
  4. i % 6 == 0
  5. i // 6 == 0

정답) 4
풀이) 6의 배수는 6을 나눈 나머지값이 0인것을 의미하므로 정답은 4번이다.

  • 다음 중 변수 i가 5와 10의 공배수인지 확인하는 방법으로 올바른 것을 모두 고르세요.
  1. i // 5 == 0 or i // 10 == 0
  2. i | 5 == 0 and i | 10 == 0
  3. i % 5 == 0 or i % 10 == 0
  4. i % 5 == 0 and i % 10 == 0
  5. i % 10 == 0
정답) 4, 5
풀이) 5와 10의 공배수를 확인 할 때엔  and를 사용하거나 5와 10의 공배수인 10의 배수를 찾으면 된다.

20.7 연습문제: 2과 11의 배수, 공배수 처리하기

  • 다음 소스 코드를 완성하여 1부터 100까지의 숫자를 출력하면서 2의 배수일 때는 'Fizz', 11의 배수일 때는 'Buzz', 2과 11의 공배수일 때는 'FizzBuzz'가 출력되게 만드세요.
for i in range(1, 101):
    if ①                          :
        print('FizzBuzz')
    elif ②          :
        print('Fizz')
    elif ③          :
        print('Buzz')
    else:
        print(i)

정답)
① i % 2 == 0 and i % 11 == 0
② i % 2 == 0
③ i % 11 == 0
풀이)
① FizzBuzz를 출력하는 건 2와 11의 공배수를 출력하는 것으로 and를 사용해서 조건식을 작성한다.
② 2의 배수만 되게끔 조건식을 작성한다.
③ 11의 배수만 되게끔 조건식을 작성한다.

20.8 심사문제: 5와 7의 배수, 공배수 처리하기

  • 표준 입력으로 정수 두 개가 입력됩니다(첫 번째 입력 값의 범위는 1~1000, 두 번째 입력 값의 범위는 10~1000이며 첫 번째 입력 값은 두 번째 입력 값보다 항상 작습니다). 첫 번째 정수부터 두 번째 정수까지 숫자를 출력하면서 5의 배수일 때는 'Fizz', 7의 배수일 때는 'Buzz', 5와 7의 공배수일 때는 'FizzBuzz'를 출력하는 프로그램을 만드세요(input에서 안내 문자열은 출력하지 않아야 합니다).
10줄 작성

정답)
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)
풀이) 입력받아 저장하는 변수 a, b를 선언 하고 map으로 int형 변환을 먼저 해준 다음에
for문에 range(a, b+1)로 범위를 지정 여기서 b까지 출력 해야하므로 b+1을 해줘야한다.
이후에 if문을 사용해 앞서 했던 공배수와 배수 처리를 조건식으로 정의해주면 된다.
profile
끝없이 탐구하는 iOS 개발자 유재우입니다!

0개의 댓글