220310

박찬웅·2022년 3월 10일
0

공부

목록 보기
9/12

오늘 배운것

  • 최저값 검색 함수구현
  • 삽입 정렬

최저값 출력함수 구현!

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회차38594
2회차35894
3회차35894
4회차35849
4회차35489
4회차34589

오른쪽칸의 비교하는 수가 좌측칸의 비교되는 수보다 클 경우(오름차순의 경우) 그보다 좌측에 있는 수들은 이미 정렬이 되어 있으므로 비교할 필요가 없다.

#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문에 걸어준다.
profile
기록장

0개의 댓글