목표

  1. 틀리는 것을 두려워하지 않게 되는 것목표입니다.
    문제들에 정답을 원하지 않습니다. 틀려도 됩니다. 에러 경고가 떠도 괜찮습니다.
  2. 초급 수준 문제부터 여러분의 일상을 프로그래밍으로 채우고, 습관을 바꿔주세요.
  3. 내가 모르고 이해하지 못하는 기술에 자동완성 사용하실 생각이면, 개발자 외 다른 직업 추천드립니다. 앞으로 최소 2년 이상, 길게 보세요. 지금 당장 못하는게 정상입니다. 다시 한 번 말씀드리지만 정답을 원하지 않습니다.
  4. 랜덤 값, 로컬 시간 가져오는 함수 외, 외장함수 사용 금지.
  5. 순서도를 작성해 주세요.
    머리속에 논리 구조와 순서를 그리는 연습을 해주세요. diagrams.net Link
  6. 모든 문제를 분석 → 설계 → 구현 과정으로 풀어주세요.

 

 

연습문제

 

 

예제18 

while 반복문을 사용해서 숫자 1부터 10까지 출력하세요(1)

더보기

1부터 시작되는 변수 i 를,

10보다 작거나 같을때까지 반복하며

변수 i 값을 출력합니다.

 

출력할때마다 변수 i 값을 1씩 증가되도록 합니다.

# 실행결과
# 1 2 3 4 5 6 7 8 9 10

 

 

 


 

예제19

for 반복문을 사용해서 숫자 1부터 10까지 출력하세요(1)

더보기

1부터 시작되는 변수 i 를,

10보다 작거나 같을때까지 반복하며

변수 i 값을 출력합니다.

 

출력할때마다 변수 i 값을 1씩 증가되도록 합니다.

# 실행결과
# 1 2 3 4 5 6 7 8 9 10

 

 

 


 

예제20

반복문을 사용해 숫자 10부터 1까지 출력하세요

:i가 10부터 1씩 감소하며 1이 될 때까지 반복하며 i 값을 출력한다.

# 실행결과
# 10 9 8 7 6 5 4 3 2 1

 

 

 


 

예제21

숫자 1부터 100까지의 합 구하세요.

더보기

0으로 초기화되어 있는 변수 sum에

숫자 1부터 100까지

1씩 증가하는 변수 i 값을 계속 더해

정수 1부터 100까 지의 합을 마지막에 출력합니다.

# 실행결과
# 5050

 

 

 


 

예제22

1부터 100까지의 수 중 짝수의 합 구하기(1)

: i가 2부터 2씩 증가하며 100이 될 때까지 반복하며, 변수 sum에 i 값을 누적합니다.

# 실행결과
# 2550

 

 

 

 


 

예제23

1부터 100까지의 수 중 짝수의 합 구하기(2)

더보기

i가 1부터 1씩 증가하며 100이 될 때까지 반복하며

i가 짝수인 경우 sum에 i 값을 누적한다.

(i를 2로 나눈 나머지가 0이면 i는 짝수이다.)

# 실행결과
# 2550

 

 


 

예제24

1, -2, 3, -4, ..., 99, -100의 합 구하기

더보기

i가 1부터 1씩 증가하며 100이 될 때까지 반복하며

i가 홀수면 sum에 i 값을 더하고,

i가 짝수면 sum에서 i 값을 뺀다.

마지막 결과값을 출력한다.

# 실행결과
# -50

 

 


 

예제25

계승 구하기

더보기

계승이란 1부터 임의의 양의 정수 n까지의 수를 모두 곱한 것을 말하며 n!로 나타낸다.

예를 들어 5의 계승은 5!로 표시하며 1*2*3*4*5 이다.

그런데, 여기서 0!은 1로 정의한다.
(5!은 1로 초기화되어 있는 변수 fact에 5부터 1까지 1씩 감소하는 i 값을 곱해 구한다.)

# 실행결과
# 120

 

 


 

예제26

약수 구하기

더보기

어떤 수 n이 있을 때, 그 수를 나누었을 때 나누어 떨어지는 수를 약수라고 합니다.

즉, n을 1부터 n까지의 수로 나누었을 때 나머지가 0이 되는 수들이 약수입니다.

 

예를 들어 n = 10일 때,

  • 10 ÷ 1 = 10 (나머지 0) → ✔ 약수
  • 10 ÷ 2 = 5 (나머지 0) → ✔ 약수
  • 10 ÷ 3 = 3 나머지 1 → ✖
  • 10 ÷ 5 = 2 (나머지 0) → ✔ 약수
  • 10 ÷ 10 = 1 (나머지 0) → ✔ 약수

그래서 10의 약수는: 1, 2, 5, 10입니다.

 

어떤 수 n이 있을 때
→ 1부터 n까지의 수 중에서
→ n % i == 0이 되는 i들이 약수입니다.

# 실행결과
# 정수: 30
# 1 2 3 5 6 10 15 30

 

 

 

 


 

예제 27

공약수 구하기

더보기

공약수란, 두 개의 정수를 모두 나누어떨어지게 하는 수를 말합니다.

즉, 어떤 수 n1, n2가 있을 때 두 수 모두의 약수인 수들이 바로 공약수입니다.
(※ 단, n1이 n2보다 작다고 가정합니다.)

 

예를 들어 n1 = 12, n2 = 18일 경우:

  • 12의 약수: 1, 2, 3, 4, 6, 12
  • 18의 약수: 1, 2, 3,     6, 9, 18

→ 두 수에 모두 있는 공통된 약수는: 1, 2, 3, 6

그래서 12와 18의 공약수는 1, 2, 3, 6이 됩니다.

 

두 수 n1, n2가 있을 때
→ 1부터 n1까지 숫자를 하나씩 검사하면서
→ n1 % i == 0 그리고 n2 % i == 0이 되면
→ 그 i는 공약수입니다.

# 실행결과
# 정수: 10
# 정수: 20
# 1 2 5 10

 

 


 

예제 28

최대공약수 구하기

더보기

최대공약수(GCD)**란, 두 수의 공약수 중 가장 큰 수를 의미합니다.

 

즉, 어떤 수 n1, n2가 있을 때:

  • n1과 n2를 모두 나누어떨어지게 만드는 수들(공약수) 중에서 가장 큰 수가 바로 최대공약수입니다.
  • (여기서는 항상 n1이 n2보다 작다고 가정합니다. 즉, n1 <= n2라고 생각하면 됩니다. 신경안써도 됨)

 

예시

n1 = 12
n2 = 18
 
  • 공약수: 1, 2, 3, 6
  • 최대공약수(GCD): 6
  1. i를 n1부터 1까지 하나씩 감소하면서 반복합니다.
  2. 매 반복마다 n1 % i == 0 그리고 n2 % i == 0인지 확인합니다.
  3. 이 조건을 처음 만족하는 i가 바로 최대공약수(GCD)입니다!
# 실행결과
# 정수: 12
# 정수: 16
# 4

 

 


 

예제 29

소수 판별하기

더보기

소수(Prime Number)란 무엇일까요?

  • 소수1과 자기 자신만 약수로 가지는 수입니다.
  • 즉, 1보다 큰 자연수 중에서
    1과 자기 자신 외에는 나누어떨어지는 수가 없는 수를 말합니다.

숫자 약수  소수인가?
2 1, 2 ✔ 소수 (O)
3 1, 3 ✔ 소수 (O)
4 1, 2, 4 ✘ 소수 아님 (X)
5 1, 5 ✔ 소수 (O)
6 1, 2, 3, 6 ✘ 소수 아님 (X)
7 1, 7 ✔ 소수 (O)

 

 

  • 어떻게 소수인지 확인할까?
    • 어떤 수 n이 있을 때
    • 2부터 n-1까지의 수를 차례로 n에 나누어 봅니다.
    • 나누어떨어지는 수가 하나라도 있다면 → ❌ 소수가 아닙니다.
    • 아무 수로도 나누어떨어지지 않으면 → ✅ 소수입니다!
  • 소수란?
    • 1보다 크고, 1과 자기 자신만 약수로 가지는 수
  • 판별 방법
    • 2부터 n-1까지 나눠서 나누어떨어지는 수가 있으면 소수가 아님
  • 예외
    • 1은 소수가 아님 (주의!)
# 실행결과
# 정수: 7
# 7 : 소수임

 

 


 

예제30 

피보나치수열 구하기 

더보기

피보나치 수열은 어떤 규칙을 따라 만들어지는 수열입니다.

이 수열은 다음과 같이 시작합니다:

1  1  2  3  5  8  13  21  34  55  …

 

규칙

  • 첫 번째 항은 1
  • 두 번째 항도 1
  • 세 번째 항부터는,➜ 바로 앞의 두 항을 더한 값이 됩니다!
3번째 항 = 1 + 1 = 2  
4번째 항 = 1 + 2 = 3  
5번째 항 = 2 + 3 = 5  
6번째 항 = 3 + 5 = 8  
... 계속 반복

 

 

이 수열의 "두 번째 항" 이후의 항들은 "이전의 두 항"을 더해 구해진다.

즉, 첫 번째 항과 두번째 항을 더한 값이 세 번째 항이 되고, 두 번째 항과 세 번째 항을 더한 값이 네 번째 항
이 된다. 이와 같은 수열을 피보나치수열이라 한다.

 

피보나치수열을 구하는 과정은 다음과 같다.

  • a에 첫 번째 항(1), b에 두 번째 항(1)을 넣습니다.
  • c는 다음 항이므로 a + b로 구합니다.
  • 다음 반복을 위해 값을 이렇게 바꿉니다:
    • a ← b (전 항 → 전전 항으로)
    • b ← c (현재 항 → 전 항으로)
  • 위 과정을 원하는 항까지 반복합니다!
  • 출력 자체에 집중합니다.
# 실행결과
# 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765

 

 

 

 


 

예제 31

최댓값 구하기

:max 값과 새롭게 입력받은 a 값을 비교하여 큰 값을 max에 저장하는 동작을 반복하며 최댓값을 구한다.

# 실행결과
# 정수: 5
# 정수: 7
# 정수: 30
# 정수: 9
# 정수: 8
# 정수: 0
# 최댓값: 30

 

 


 

예제32

직각 삼각형 모양으로 수 출력하기

 

 

바깥쪽 반복문은 i 값을 1부터 5까지 반복하고, 안쪽 반복문은 j 값을 1부터 i까지 반복하며 j 값을 출력하면 다음과 같이 된다. 단, 안쪽 반복문을 마치면 “ \n”을 이용해서 다음 줄로 넘긴다.

 

 

 

 

 


 

예제33

1부터 10까지의 정수에 대한 약수 구하기

 

중첩 반복 구조를 이용해서 1부터 10까지의 정수에 대한 약수를 구한다.

약수를 구하는 방법은 예제 26에서 살펴보았다.

# 출력결과 
# 1 약수: 1 
# 2 약수: 1 2 
# 3 약수: 1 3 
# 4 약수: 1 2 4 
# 5 약수: 1 5 
# 6 약수: 1 2 3 6 
# 7 약수: 1 7 
# 8 약수: 1 2 4 8 
# 9 약수: 1 3 9 
# 10 약수: 1 2 5 10

 

 

 

 


 

예제34

2부터 100까지의 소수 구하기

 

i가 2부터 1씩 증가하며 100이 될 때까지 반복하며 각 i 값이 소수인지 판별합니다.

소수를 판별하는 방법은 예제 29에서 살펴보았습니다.

아래 실행 결과와 같은 값을 출력하세요.

# 출력결과
# 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

 

 

 

 


 

예제35

누적합의 누적합을 계산하는 문제

1, (1+2), (1+2+3), …, (1+2+ … +10)의 합 구하기

더보기

이 문제는 단순한 덧셈이 아니라,
1부터 i까지 더한 값을 다시 모아서 더하는 문제입니다.

1
(1 + 2)
(1 + 2 + 3)
(1 + 2 + 3 + 4)
...
(1 + 2 + 3 + ... + 10)

 

 

각 줄은 이전까지 숫자들을 모아서 더한 값이죠.
그걸 다시 전체로 모아서 또 한 번 더합니다.

i n sum
1 1 1
2 1+2 1+(1+2)
3 1+2+3 1+(1+2)+(1+2+3)
... ... ...
9 1+2+3+…+8+9 1+(1+2)+(1+2+3)+…+(1+2+3+4+5+6+7+8+9)
10 1+2+3+…+9+10 1+(1+2)+…+(1+2+3+4+5+6+7+8+9+10)

i가 1부터 1씩 증가하며 10이 될 때까지 반복하며 n은 i 값을 누적하고, sum은 n 값을 누적하여 원하는 값을 구한다.

# 실행결과
# 220

 

 

 

 


 

예제36

구구단

더보기

다음과 같은 형식으로 출력되는 구구단 순서도와 프로그램을 작성한다.

각 단에 해당하는 2부터 9까지의 수는 변수 i로, 곱하여지는 수 1부터 9까지는 변수 j로, 곱한결과는 j*j로 나타낸다.

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
3*1= 3 3*2= 6 3*3= 9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
...
9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81

 

 

규칙 

  • 곱하는 앞의 수는 2부터 9까지 증가합니다 → 변수 i
  • 곱해지는 뒤의 수는 1부터 9까지 증가합니다 → 변수 j
  • 결과는 i * j로 계산됩니다

 

반복 구조로 생각하기

  • 바깥 반복문 i: 2부터 9까지 (각 "단"을 나타냄)
  • 안쪽 반복문 j: 1부터 9까지 (각 단 안의 곱셈 수행)

 

# 실행결과
# 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
# 3*1= 3 3*2= 6 3*3= 9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
# 4*1= 4 4*2= 8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36
# 5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45
# 6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54
# 7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63
# 8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72
# 9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81

 

 

 

 


 

점프 투 파이썬

연습문제 (148페이지)

 

Q5. A 학급에 총 10명의 학생이 있다. 이 학생들의 중간고사 점수는 다음과 같다. 

[70, 60, 55, 75, 95, 90, 80, 80, 85, 100]

 

for문과 while문 각각 사용하여 A 학급의 평균 점수를 구하는 문제를 만들어 보자.

아래는 for문의 예시다.

A = [70, 60, 55, 75, 95, 90, 80, 80, 85, 100]
total = 0
for score in A:
    total +=  ??? # A학급의 점수를 모두 더한다.
    average = ??? # 평균을 구하기 위해 총 점수를 총 학생수로 나눈다.
print (average)

 

 

 

 


 

과제

 

 

 

과제 13

5부터 15까지 출력하는 순서도와 파이썬 프로그램을 작성하세요.

while 반복문으로 만드세요.

# 실행결과
# 5 6 7 8 9 10 11 12 13 14 15

 

 

 

 


 

과제 14

5부터 15까지 출력하는 순서도와 파이썬 프로그램을 작성하세요.

for 반복문으로 만드세요.

더보기

설계 (순서도)

구현 (소스코드)

for i in range(5, 16):
    print(i, end=" ")
# 실행결과
# 5 6 7 8 9 10 11 12 13 14 15

 

 

5부터 15까지 출력하는 순서도와 파이썬 프로그램을 작성하세요.

while 반복문으로 만드세요.

 

 

 

 


 

과제 15

while형 반복 구조를 이용해서 10부터 1까지 출력하는 순서도와 파이썬 프로그램을 작성하세요.

# 실행결과
# 10 9 8 7 6 5 4 3 2 1

 

 

 

 


 

과제 16

1부터 "입력받은 수"까지의 합을 출력하는 순서도와 파이썬 프로그램을 작성하여라.

# 실행결과
# 정수: 10
# 55

 

 

 

 


 

과제 17

1부터 100까지의 수 중 3의 배수의 합을 출력하는 순서도와 파이썬 프로그램을 작성하여라.

hint)  in range(3, 101, 3):

# 실행결과
# 1683

 

 

 

 


 

과제 18

1부터 100까지의 수 중 3의 배수의 합을 출력하는 순서도와 파이썬 프로그램을 작성하여라.

hint) if i%3==0:

# 실행결과
# 1683

 

 

 

 


 

과제 19

1, 2, -3, 4, 5, -6, ..., -99, 100의 합을 구해 출력하는 순서도와 파이썬 프로그램을 작성하여라.

# 실행결과
# 1684

 

 

 

 


 

과제 20

입력받은 숫자의 약수와, 약수의 개수를 출력하는 순서도와 파이썬 프로그램을 작성하여라.

# 실행결과
# 정수: 30
# 1 2 3 5 6 10 15 30 : 8

 

 

 

 


 

과제 21

세 수의 공약수를 출력하는 순 과제 서도와 파이썬 프로그램을 작성하여라.

# 실행결과
# 정수 : 300
# 정수 : 400
# 정수 : 256
# 1 2 4

 

 

 

 


 

과제 22

예제 29번을 소수 판별하기 내용을 참고하여

1부터 자기 자신까지의 수로 차례로 나누어서 나누어떨어지는 경우가 2번 발생하면 이 수는 소수이고,

그렇지 않으면 소수가 아니다. 이 방법을 이용해서 소수를 판별하는 순서도와 파이썬 프로그램을 작성하여라.

# 실행결과
# 정수: 45
# 45 : 소수아님

 

 

 

 


 

과제 23

예제 30번을 참고하여, 

피보나치수열의 20번째 항까지의 합을 구하는 순서도와 파이썬 프로그램을 작성하여라.

# 실행결과
# 17710

 

 

 

 


 

과제 24

최솟값을 구하는 순서도와 파이썬 프로그램을 작성하여라.

0을 입력하기 전까지 입력값을 받아 최소값을 구하고, 0이 입력되면 최소값을 출력하도록 구현하라.

# 실행결과
# 정수: 2
# 정수: 4
# 정수: 6
# 정수: 9
# 정수: 5
# 정수: 0
# 최솟값 : 2

 

 

 

 


 

과제 25

다음과 같이 출력하는 순서도와 파이썬 프로그램을 작성하여라.

각각 출력하시면 됩니다.

 

 

 

 


 

과제 26

예제 25번을 참고하여,

1!, 2!, 3!, 4!, 5!의 합을 출력하는 순서도와 파이썬 프로그램을 작성하여라.

# 실행결과
# 153

 

 

 

 


 

과제27

예제 36번을 참고하여,

다음과 같은 형식으로 출력되는 구구단 순서도와 파이썬 프로그램을 작성하여라.

2*1= 2 3*1= 3 4*1= 4 5*1= 5 6*1= 6 7*1= 7 8*1= 8 9*1= 9
2*2= 4 3*2= 6 4*2= 8 5*2=10 6*2=12 7*2=14 8*2=16 9*2=18
2*3= 6 3*3= 9 4*3=12 5*3=15 6*3=18 7*3=21 8*3=24 9*3=27
2*4= 8 3*4=12 4*4=16 5*4=20 6*4=24 7*4=28 8*4=32 9*4=36
2*5=10 3*5=15 4*5=20 5*5=25 6*5=30 7*5=35 8*5=40 9*5=45
2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 7*6=42 8*6=48 9*6=54
2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 8*7=56 9*7=63
2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 9*8=72
2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

 

 

 

 


 

달력만들기

 

년월을 (원하는 방식으로) 입력받아

해당 년도와 월을 출력하세요.

 

* 윤년 계산하세요.

그레고리력의 윤년 규칙은 다음과 같습니다.

  • 서력 기원 연수가 4로 나누어 떨어지는 해는 윤년으로 한다. (1988년, 1992년, 1996년, 2004년, 2008년, 2012년, 2016년, 2020년, 2024년, 2028년, 2032년, 2036년, 2040년, 2044년 ...)
  • 서력 기원 연수가 4, 100으로 나누어 떨어지는 해는 평년으로 한다. (1900년, 2100년, 2200년, 2300년, 2500년...)
  • 서력 기원 연수가 4, 100, 400으로 나누어 떨어지는 해는 윤년으로 둔다. (2000년, 2400년...)

* 정렬 해서 깔끔하게 출력하세요.