파이썬 기초

[ 파이썬 기초] 15. for문 핵심 문제

외양간찾는 새끼소 2025. 3. 14. 16:48

1. 구구단은 출력 할 줄 알아야지.

print()를 배울때 “Hello World!”를 출력하는 것과 같이 for을 배우면 꼭 해결해 봐야 하는 국룰 문제가 있습니다.

그 첫번째인 구구단 문제를 풀어봅시다.

  • 2단 부터 9단까지 구구단을 출력해주세요. 이때 아래 출력형식을 지켜서 출력해 주세요
  • --- 2단 --- 2 * 1 = 2 2 * 2 = 4 2 * 3 = 6 2 * 4 = 8 2 * 5 = 10 2 * 6 = 12 2 * 7 = 14 2 * 8 = 16 2 * 9 = 18

< 정답 코드 >

for i in range(2, 10):
	print(f"--- {i}단 ---")
	
	for j in range(1, 10):
		print(f"{i} * {j} = {i*j})

위와 같이 for안에 또 for이 있는 구조를 이중 반복이라고 합니다.


2. 별은 찍을 줄 알아야지

국룰 문제 두 번째 별찍기 문제입니다. 6가지 별찍기 문제를 해결해 봅시다.

  1. 삼각형
    *
    **
    ***
    ****
    *****
    
    < 정답 코드 >
  2. for i in range(1, 6): print('*' * i)
  3. for을 활용하여 아래 출력을 만들어 주세요.
  4. 삼각형 상하 반전
    *****
    ****
    ***
    **
    *
    
    < 정답 코드 >
  5. for i in range(5, 0, -1): print("*" * i)
  6. for을 활용하여 아래 출력을 만들어 주세요.
  7. 삼가형 좌우 반전
        *
       **
      ***
     ****
    *****
    
    < 정답 코드 >
  8. for i in range(4, -1, -1): print(" "* i, end="") print("*" * (5 - i))
  9. for을 활용하여 아래 출력을 만들어 주세요.
  10. 삼각형 상하 좌우 반전
    *****
     ****
      ***
       **
        *
    
    < 정답 코드 >
  11. for i in range(5, 0, -1): print(" " * (5 - i), end="") print('*'*i)
  12. for을 활용하여 아래 출력을 만들어 주세요.
  13. 피라미드
        *
       ***
      *****
     *******
    *********
    
    < 정답 코드 >
  14. for i in range(5): star_num = 1 + i * 2 print(" " * (4-i), end="") print("*" * star_num)
  15. for을 활용하여 아래 출력을 만들어 주세요.
  16. 다이아몬드
       *
      ***
     *****
    *******
     *****
      ***
       *
    
    < 정답 코드 >
  17. for i in range(4): star_num = 1 + i * 2 print(" " * (3-i), end="") print("*" * star_num) for i in range(3): star_num = 5 - (i*2) print(" " * (i+1), end="") print("*" * star_num)
  18. for을 활용하여 아래 출력을 만들어 주세요.

3. 소수는 구할 수 있어야지.

국룰 문제는 아니지만 꼭 알아야 하는 소수 구하기 문제입니다.

  • 사용자가 N을 입력하면 2 부터 N 사이에 소수를 모두 출력해 주세요.

< 정답 코드 >

N = int(input())

for i in range(2, N+1):
	if i == 2: # 2는 소수입니다.
		print(i)
		continue
		
	# 3이상의 수의 소수 판별 방법
	for j in range(2, i):
		if i % j == 0: # 1과 자기자신 이외에 나누어 떨어지면 소수가 아니야
			break
	else:
		print(i)

else가 if문도 아닌데 사용되어서 당황할 수 있습니다. for에서 else 가 사용되면 break가 무조건 있습니다! for이 break에 의해 종료되지 않았으면 else를 실행 시켜라 라는 의미입니다. 즉, break에 의해 for문이 종료 되었으면 else 가 실행 되지 않습니다.