algorithm 01

sung eon·2022년 8월 1일
0

Algorithm

목록 보기
2/29

Q. 다음과 같이 숫자로 이루어진 배열이 있을 때, 이 배열 내에서 가장 큰 수를 반환하시오.

[3, 5, 6, 1, 2, 4]

최댓값 찾기 문제로, 두가지 방법이 존재한다.

방법 1 : 숫자 비교

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)

방법 2: 지정 변수 활용

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)

나한테는 두번째 방법이 더 쉽고 편했다 : )
지정 변수에 값을 직접 담는게 더 직관적이라고 해야할까? 생각의 흐름에 잘 맞는듯하다.

➲ 추가 작성 : 최빈값 찾기

profile
코베베

0개의 댓글