Q. 다음과 같이 숫자로 이루어진 배열이 있을 때, 이 배열 내에서 가장 큰 수를 반환하시오.
[3, 5, 6, 1, 2, 4]
최댓값 찾기 문제로, 두가지 방법이 존재한다.
input = [3, 5, 6, 1, 2, 4]
# 3 vs 5 / 5가 더 크니까 5부터 비교=> 5 vs 3, 5 vs 6 / 6이 더 크니까 6부터 비교=> 6 vs 3, 6 vs 5, 6 vs 1, 6 vs 2, 6 vs 4
def find_max_num(array):
# 배열의 숫자를 하나 하나 꺼내서 비교해야하니까 for 문
# array에 담긴 숫자들을 하나씩 꺼내어 num에 넣어줌
for num in array:
# num과 compare_num을 하나씩 뽑으면서 배열을 반복하는 이중 반복문의 구조
for compare_num in array:
# num이 compare_num 보다 작다면 실패 => break로 반복문 끝나버림 => 다음 넘버로 넘어감
if num < compare_num:
break
else:
# else는 for문이 다 끝날 때까지 break문이 한 번도 나오지 않았다면 실행되는 것
# 6이 만약 현재의 num 이라면 3,5,1,2,4랑 비교했을 때 한번도 작다는 결과를 받아들이지 않았다
return num
result = find_max_num(input)
print(result)
input = [3, 5, 6, 1, 2, 4]
# 방법 2. 지정 변수
def find_max_num(array):
max_num = array[0]
# 왜 [0] 이냐면, 배열에 임의의 숫자를 비교하면서 갈 거기 때문에 0부터!
for num in array:
if num > max_num:
max_num = num
return max_num
result = find_max_num(input)
print(result)
나한테는 두번째 방법이 더 쉽고 편했다 : )
지정 변수에 값을 직접 담는게 더 직관적이라고 해야할까? 생각의 흐름에 잘 맞는듯하다.
➲ 추가 작성 : 최빈값 찾기