프로그래밍
1
리스트와 다차원 리스트
리스트
① 리스트의 개념
2
• 리스트를 활용하여 프로그래
밍할 수 있다.
• 다차원 리스트를 활용하여
프로그래밍할 수 있다.
3
04. 리스트와 다차원 리스트
② 리스트의 구조
4
04. 리스트와 다차원 리스트
5
color[1]
color[4]
color[6]
③ 리스트의 활용
6
04. 리스트와 다차원 리스트
7
04. 리스트와 다차원 리스트
8
score = [100, 22, 13, 12, 43, 87, 97, 23, 91, 29]
# 1. 맨 마지막 학생 점수 29점을 92점으로 수정하기
score[9] = 92
score.sort( )
score.reverse( )
print( score )
다차원 리스트
9
04. 리스트와 다차원 리스트
2차원 리스트를 이용한 프로그램 작성하기
출력 결과에 맞게 소스 코드를 완성해 보자.
10
data[2][0], data[2][1]
data[6][0], data[6][1]
data 리스트에 새로운 학생의 이름과 성적이 나오도록 소스 코드를 완성해 보자.
11
input("학생의 이름: ")
int(input("학생의 점수: "))
[name, score]
data
2차원 리스트 활용하기
위 경기 결과를 리스트에 저장하고 승점을 계산하는 프로그램을 완성해 보자.
12
(stage[0][1]*3)+(stage[0][2]*1)
(stage[1][1]*3)+(stage[1][2]*1)
(stage[2][1]*3)+(stage[2][2]*1)
(stage[3][1]*3)+(stage[3][2]*1)
next_stage 변수에 16강에 진출할 수 있는 상위 2개국의 결과를 저장하고 출력해 보자.
next_stage에 저장된 데이터 중 국가 이름만 출력하는 프로그램을 작성해 보자.
13
stage[0]
stage[1]
print( '16강 진출 국가는', next_stage[0][0], ', ',
next_stage[1][0], "입니다." )
제어 구조
선택 구조
① if 문의 이해
14
다양한 제어 구조를 복합적으
로 활용하여 프로그래밍할 수
있다.
조건식 조건문에서 사용하는 조건식은 변수와 상수, 그리고 연산자를 사용하여 만들 수 있으며, 그 중 연산자는 산술, 비교, 논리 연산자를 활용할 수 있다. 조건식은 조건문을 작성하는데 기본이 되는 단계로, 조건식을 논리적으로 세워야 문제를 명확하게 해결할 수 있다.
② if 문의 활용
15
05. 제어 구조
16
05. 제어 구조
17
stu1[1] > stu2[1]
stu1[0]
stu2[0]
if 문을 이용한 문제 해결하기
현재의 문제 상황을 분석해 보자.
18
46
100
다음은 문제를 해결하기 위한 알고리즘과 소스 코드이다. 알고리즘을 토대로 소스 코드를 완성해 보자.
19
minute > 50
minute*2
if ~ elif ~ else 문을 이용한 프로그램 작성하기
20
알고리즘을 보고 순서도의 조건식에 들어갈 내용을 적어 보자.
21
fruit >= 11
fruit >= 9
입력한 당도에 따른 등급이 출력되도록 프로그램을 완성해 보자.
22
if fruit >= 11:
print("특등 등급입니다.")
elif fruit >= 9:
print("상 등급입니다.")
else:
print("보통 등급입니다.")
반복 구조
① for 문
23
05. 제어 구조
24
05. 제어 구조
② while 문
25
05. 제어 구조
26
05. 제어 구조
무한 루프
반복 처리 조건이 충족되지 않아 작업이 무한히 반복되는 구조로, 프로그램을 강제로 종료하지 않으면 무한히 실행된다.
(예) while True: → 반복문이 무한히 실행
반복 구조를 이용한 프로그램 작성하기
담임 선생님의 2가지 요구 사항이 무엇인지 작성해 보자.
27
지각을 5번 초과로 한 학생 명단
가장 지각을 하지 않은 학생 이름
for 문을 사용하여 담임 선생님의 첫 번째 요구 사항을 만족시키는 프로그램을 완성해 보자.
28
if late[idx] > 5:
stu.append( name[idx] )
while 문을 사용하여 담임 선생님의 두 번째 요구 사항을 만족시키는 프로그램을 완성해 보자.
29
if late[idx] < late[minStu]:
minStu = idx
idx = idx + 1
난수와 반복문을 이용한 프로그램 작성하기
random( ) 함수를 사용하여 무작위 숫자 1개를 출력하는 프로그램을 완성해 보자.
randint(a, b) 함수는 a~b 사이의 임의의 정수를 생성하는 함수이다. 반복문과 randint( ) 함수를 사용해 0 ~ 100 사이의 무작위 정수 10개를 생성하고 출력하는 프로그램을 완성해 보자.
30
random
random( )
import random
randint(0, 100)
random 모듈을 사용하여 1,000명의 학생 키를 기록하는 파일(height.txt)을 만들고, 평균 키를 계산하는 프로그램을 완성해 보자.
31
(str(random.randint(100, 200)))
for i in range(1000):
sum += int(file.readline())
print( sum/1000 )
중첩 제어 구조
① 중첩 선택 구조
32
05. 제어 구조
중첩 선택 구조를 이용한 프로그램 작성하기
33
name[0] > name[1]:
name[0] > name[2]:
name[1] > name[2]:
② 중첩 반복 구조
34
05. 제어 구조
중첩 반복 구조를 이용한 프로그램 작성하기
35
중첩 제어 구조를 이용하여 정렬 및 탐색하기
학생 데이터를 2차원 리스트 형태로 저장해 보자.
36
['호두', "ENFP"], ['로이', "ISFJ"],
['누룽', "ISTJ"], ['로사', "ESFP"],
['초코', "INFJ"], ['루루', "INTP"],
['코코', "ISFJ"], ['바방', "ISFP"]
저장한 데이터를 성격 유형 기준 오름차순(가나다순)으로 정렬해 보자.
37
버블 정렬
if data[j-1][1] > data[j][1]:
data[j-1], data[j] = data[j], data[j-1]
저장한 데이터를 이름 기준으로 내림차순 정렬해 보자.
38
선택 정렬
vi = i
if data[j][0] > data[vi][0]:
vi = j
data[i], data[vi] = data[vi], data[i]
정렬된 데이터에서 ‘루루’ 학생의 성격 유형을 출력해 보자
4에서 사용한 탐색 알고리즘은 무엇인지 적고, 다른 탐색 알고리즘을 사용하려면 어떻게 바꿀 수 있을지 생각해 보자.
39
if data[i][0] == "루루":
ans = data[i][1]
순차 탐색
순차 탐색이 아닌 이분 탐색을 활용하면 탐색의 범위를 절반씩 나누기에 효율적으로 탐색할 수 있다.
이름 순으로 내림차순 정렬된 데이터에서 ‘루루’ 학생의 성격 유형을 출력해 보자.
40
이분 탐색
mid = (s + e) // 2
break
s = mid+1
e = mid -1