목표

  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의 약수는 1부터 n까지의 수로 n을 나누어떨어지게 하는 수가 된다.

예를 들면, 10의 약수는 1부터 10까지 수들로 나누었을 때 나머지가 0이 되게 하는 수, 즉 1, 2, 5, 10이 된다.

 

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

 

 

 

 


 

예제 27

공약수 구하기

 

공약수란 0이 아닌 두 정수의 공통되는 약수를 말한다. 즉, 두 정수를 나누어떨어지게 하는 공통의 수를 의미한다.
n1과 n2의 공약수는 1부터 n1까지 1씩 증가하는 i로 n1과 n2 모두를 나누어떨어지게 하는수가 된다. 

단, n1이 n2보다 작다고 가정한다.

 

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

 

 


 

예제 28

최대공약수 구하기

 

두 정수의 공약수 중 가장 큰 것을 최대공약수라 한다.

그러므로 n1과 n2의 최대공약수는 n1부터 1까지 1씩 감소하는 i로 n1과 n2 모두를 나누어떨어지게 하는 첫 번째 수가 된다. 단, n1이 n2보다 작다고 가정한다.

 

# 실행결과
# 정수: 12
# 정수: 16
# 4

 

 


 

예제 29

소수 판별하기

 

소수란 2, 3, 5, 7, …과 같이 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

 

임의의 수를 2부터 자기 자신보다 1 작은 수까지의 수로 차례로 나누어서 나누어떨어지는 경우가 생기면 소수가 아니고, 나누어떨어지는 경우가 생기지 않으면 소수이다.

 

# 실행결과
# 정수: 7
# 7 : 소수임

 

 


 

예제30 

피보나치수열 구하기 

 

다음과 같은 수열이 있다.

1  1  2  3  5  8  13  21  34  55  …

 

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

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

 

피보나치수열을 구하는 과정은 다음과 같다.
전전 항을 저장하는 변수를 a, 전 항을 저장하는 변수를 b, 현재 항을 저장하는 변수를 c라 하고, a에 첫 번째 항인 1을, b에 두 번째 항인 1을 저장하고 시작한다. 현재 항 c는 a 값과 b 값을 더한 값이 된다. 그 후 전 항 b값을 a에, 현재 항 c 값을 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)의 합 구하기

 

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

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)

 

# 실행결과
# 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*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

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

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

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년...)

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