최저값 출력함수 구현!
min()함수 사용 x
# 최저값 출력 함수 구현하기. min() 사용 x
# [1] 함수작성
#----------------------------------------
def min_in_list(lst):
# 최초 초기 최고값을 0으로 설정
first_min_number = lst[0]
# 반복문을 돌며 전달 리스트내 요소중 초기 최곳값보다 큰 값이 있으면 초기 최고값을 바꿈
for i in lst[1:]:
if i < first_min_number:
first_min_number = i
return first_min_number
#----------------------------------------
result = min_in_list(english_score)
print(result, min(english_score))
💡 문제 : 학생 5명의 수학 점수를 입력받아 60점 이상의 합계를 구하는 코드를 구현하시오.
# 문제 : 학생 5명의 수학 점수를 입력받아 60점 이상의 합계를 구하는 코드를 구현하시오.
# 리스트, 합계, 알고리즘, 합
#[1] : 사용자 입력
scores = input('학생 5명의 수학 점수를 입력하세요:').split(" ")
# 리스트 구조로 받아짐
#[2] : 입력받은값 --> 리스트
print(scores)
#[3] : 필요한 변수 선언 후 반복문과 조건문 사용
total = 0
for i in scores:
if int(i) >= 60:
total += int(i)
#[4] : 출력
print('[결과 출력]\n' + '-' * 40)
print(f'학생 {len(scores)}명의 입력 점수 중 60점 이상의 합계는? {total}점 입니다.')
print('-' * 40)
💡 삽입 알고리즘! 알고리즘에 대한 설명을 글로 요약해보고 그것을 그림으로 설명해보자
1번과 2번에서 시작하여, 회차가 거듭될수록 한칸 오른쪽에 있는 수가 왼쪽에 있는 수들과 비교되며 삽입정렬된다.
1회차 | 3 | 8 | 5 | 9 | 4 |
---|---|---|---|---|---|
2회차 | 3 | 5 | 8 | 9 | 4 |
3회차 | 3 | 5 | 8 | 9 | 4 |
4회차 | 3 | 5 | 8 | 4 | 9 |
4회차 | 3 | 5 | 4 | 8 | 9 |
4회차 | 3 | 4 | 5 | 8 | 9 |
오른쪽칸의 비교하는 수가 좌측칸의 비교되는 수보다 클 경우(오름차순의 경우) 그보다 좌측에 있는 수들은 이미 정렬이 되어 있으므로 비교할 필요가 없다.
#insertion sort
# 정렬 대상의 1번쨰 인덱스(두 번째)값과 1-1 번째(0번째)시작으로 순회하면서 비교 및 자기 위치에 삽입
# 구구단과 같이 중첩된 이중 반복문 안에서 삽입 정렬이 이뤄진다. --> 반복은 n-1만큼 --> for i in range(1, len(lst))
# 첫 번째 반복문 --> 왼쪽에서 오른쪽으로 진행하면서 맨 끝까지 순회한다.
# 두 번째 반복문 --> 오른쪽에서 왼쪽 끝까지 2개씩 값을 비교하면서 순회한다.
lst = [4,8,7,2,3]#
for i in range(1, len(lst)): # 리스트 요소가 n이면 n-1번만 반복하면됨
#첫 번째 요소까지 역으로 진행하면서 삽입 위치 찾기
while i > 0 and lst[i-1] > lst[i]: # 왼쪽의 값이 더 크면 swap
lst[i-1], lst[i] = lst[i], lst[i-1] #자리바꿈
i-= 1 # i 가 0이되면 i-1 이 리스트 마지막이 되므로 i>0 조건을 while문에 걸어준다.