본문 바로가기

온라인 강의/파이썬 문제집

04 반복문: 코드의 반복 줄이기

1. 3, 6, 9 게임

엘리스 토끼는 친구와 3, 6, 9 게임을 하기 위해 친구에게 규칙을 설명해 주었습니다.

하지만 친구가 규칙을 이해하지 못해서 직접 시범을 보여주려고 합니다.

1부터 30까지 3, 6, 9 게임을 하는 프로그램을 작성해 봅시다.

3, 6, 9게임의 규칙은 다음과 같습니다.

  • 1부터 차례대로 말한다.
  • 숫자 3, 6, 9가 들어가는 수의 경우에는 짝!을 출력한다.
    • 예시) 6, 19, 23, 35

 

  1. 위 3, 6, 9게임의 규칙에 맞게 1부터 30까지 출력해 보세요.
  2. 한 줄당 숫자 혹은 짝! 하나씩 출력하면 됩니다.
# 반복문을 이용하여 3, 6, 9 게임을 만들어주세요!

for i in range(1, 31):
    if '3' in str(i) or '6' in str(i) or '9' in str(i):
        print('짝!')
    else:
        print(i)

결과 화면

 

2. 숫자 출력

숫자를 입력하면 1부터 해당 숫자까지 출력하는 코드를 작성해 봅시다.

지금까지 print를 사용하면 무조건 줄이 바뀌었습니다. 하지만 end=를 이용하면 print의 끝을 임의로 지정할 수 있습니다.

이를 이용해서 출력할 때 각 숫자를 ,와 띄어쓰기로 각각 구분해 보세요.

 

  1. 0보다 큰 정수를 입력받으세요.
  2. 1부터 해당 숫자까지 출력 예시처럼 출력해 보세요.
# 1번을 해보세요.
x = int(input())

# 2번을 해보세요.
for i in range(1, x+1):
    if i == x:
        print(i, end = " ")
    else:
        print(i, end = ", ")

결과 화면

 

3. 노동요

‘링딩동 링딩동 링디기디기 딩딩딩’

수능금지곡, 노동요 등등 많은 이름으로 불리는 링딩동이에요. 중독성이 강해서 붙여진 이름이죠.

세상에는 베짱이처럼 일하지 않고 노는 것만 좋아하는 사람들이 있어요. 그들을 위해 엘리스와 함께 마법을 부려볼까 해요. 다음과 같이 말이죠!

 마법의 규칙

  • 공백()은 ‘링디기디기’와 줄바꿈(엔터)을 출력합니다.
  • 점 (.)은 ‘딩딩딩’과 줄바꿈(엔터)을 출력합니다.
  • 공백과 점을 제외한 모든 글자는 ‘링딩동’과 띄어쓰기를 출력합니다.
  1. 한글로 된 임의의 길이의 문자열을 입력합니다.
  2. 마법의 규칙들이 적용된 문자열을 출력합니다. 베짱이도 일하게 만드는 노동요를 부르는 프로그램을 작성해 보세요.
# 1번을 해보세요.
x = input()

# 2번을 해보세요.
for i in x:
    if i == " ":
        print("링디기디기", end = "\n")
    elif i == ".":
        print("딩딩딩", end = "\n")
    else:
        print("링딩동 ", end = "")

결과 화면

 

4. 약수 출력하기

정수가 어떤 수로 나누어 떨어질 때, 이 수를 약수라고 합니다.

예를 들어 4의 약수는 1, 2, 4 입니다.

12의 약수는 1, 2, 3, 4, 6, 12 입니다.

어떤 한 수를 입력받았을 때, 해당 수의 약수들을 출력하는 코드를 작성해 봅시다.

 

  1. 자연수 N(2 이상 100,000 이하)을 입력받습니다.
  2. 한 줄에 10개의 약수씩 한 칸씩 띄워서 출력을 합니다. 즉, 약수를 출력함과 동시에 공백을 같이 넣어주면 됩니다.
# 1번을 해보세요.
x = int(input())
count = 0
# 2번을 해보세요.

for i in range(1, x+1):
    if x%i == 0:
        print(i, end = " ")
        count += 1
   
    if count == 10:
        print("")
        count = 0

결과 화면

5. 피보나치 수열 출력하기

피보나치 수열은 첫째 및 둘째 항이 1이며 그 뒤의 모든 항은 바로 앞 두 항의 합인 수열입니다. 처음 여섯 항은 각각 1, 1, 2, 3, 5, 8입니다. 편의상 0번째 항을 0으로 두겠습니다.

여기서 저희는 0번째 항부터 세어 주겠습니다. 어떤 수 n(자연수)을 입력받았을 때 피보나치 수열 내 가장 큰 수가 n 미만인 리스트를 출력하는 문제입니다. 어떤 파이썬 코드를 적용할지 고민하면 쉽게 풀릴 수 있습니다.

 

  1. 자연수 n을 입력받습니다.
  2. n보다 작은 수들의 피보나치 수열을 출력하세요. 피보나치 수열의 첫 번째 항은 0, 두 번째 항은 1입니다.
# 1번을 해보세요.
n = int(input())

# 2번을 해보세요.

def fibonacci(n):
    fib = [0, 1]
    i = 1
    while fib[i] < n:
        i += 1
        fib.append(fib[i-1] + fib[i-2])
    return fib[:-1]

ans = fibonacci(n)
print(ans)


결과화면

 

 

6.촉촉한 초코칩

친구들과 모여 장기자랑을 하게 된 엘리스!

준비해왔던 비장의 초코칩 랩을 선보이려고 하는데요. 엘리스는 촉촉한 초코칩이라는 말로 라임을 맞추었다고 해요.

과연 이 랩에는 촉촉한 초코칩이라는 말이 몇 번이나 들어있을까요?

우리가 프로그램을 이용해서 세어보아요.

 

  1. 임의의 길이의 문자열을 입력받으세요.
  2. 직접 입력받은 문자열에 있는 촉촉한 초코칩의 횟수만 출력해 주세요.
# 1번을 해보세요.
x = input()

# 해당 문자열이 몇 번 나오는지 확인해 봅시다.
chocochip = '촉촉한 초코칩'

# 2번을 해보세요.

ans = x.count("촉촉한 초코칩")
print(ans)

결과화면

 

7.문자열은 빼달라구!

엘리스 토끼는 학교에서 과제를 하고 있습니다. 노트북이 망가져서 태블릿 PC로 작업을 하고 있는데, 화면이 너무 작아서 자꾸 오타가 나네요. 특히나 숫자를 치고 싶은데 자꾸 문자가 섞여서 쳐지는 바람에 과제 제출기한을 놓쳤습니다! 이번 일을 계기로 엘리스 토끼는 다짐했어요.

‘문자와 숫자를 섞어서 치더라도 숫자만 나오게 하는 프로그램을 짜야겠다!’ 엘리스 토끼를 도와서 프로그램을 짜볼까요?

 

  1. 문자열을 입력받으세요.
  2. 입력 받은 문자열에서 문자 또는 기호를 제외한 숫자만 추출해서 문자열 형태로 출력하는 코드를 작성하세요.
# 1번을 해보세요.
x = input()

# 2번을 해보세요.

for i in x :
    if 47 < ord(i) < 58 :
        print(i, end = "")

결과 화면