인프런 커뮤니티 질문&답변

이영준님의 프로필 이미지
이영준

작성한 질문수

38군데 합격 비법, 2024 코딩테스트 필수 알고리즘

1-4. 알고리즘과 친해지기 (1)

1-4 2번째풀이 관련

작성

·

65

0

1. 현재 학습 진도

  • 몇 챕터/몇 강을 수강 중이신가요? 1-4 알고리즘 친해지기

def find_max_num(array):
    max_num = 0

    for i in range (len(array)):

        if array[i] > max_num :
            max_num = array[i]


    return max_num


print("정답 = 6 / 현재 풀이 값 = ", find_max_num([3, 5, 6, 1, 2, 4]))
print("정답 = 6 / 현재 풀이 값 = ", find_max_num([6, 6, 6]))
print("정답 = 1888 / 현재 풀이 값 = ", find_max_num([6, 9, 2, 7, 1888]))

저는 다음과 같이 풀어봤는데 선생님께서 푸신것과
최대값을 갱신해서 구한다는점이 같았는데
gpt에게 물어보니 다음풀이는 배열의 인덱스를 순회하는 방식이고 강의 풀이는 배열의 값을 순회하는 방식이라고 하는데
둘방식이 차이가 있는지? 다르다면 어떠한 경우에 값을 순회하고 ,인덱스를 순회하는지 궁금합니다.

답변 1

1

딩코딩코님의 프로필 이미지
딩코딩코
지식공유자

안녕하세요 영준님! 좋은 질문 감사합니다 __

 

넵 두개의 방식은 다릅니다!

배열은 연속적인 자료형태를 담아놓는 자료구조입니다.

제 파이썬 강의에서는 이를 서랍장이라고 비유해서 설명하고 있습니다.

마치 서랍장의 첫번째 칸에는 A, 두번째 칸에는 B 처럼 자료들을 연속적으로 저장해놓는 것입니다.

 

그런데 컴퓨터의 경우에는 첫번째 두번째라고 일컫는 것이 아닌, 순서를 0부터 시작한다는 특징이 있습니다.

컴퓨터에서 부르는 순서를 바로 인덱스라고 부릅니다.

 

따라서 "첫번째 칸에 A 가 있다" 가 아니라 "0번째 인덱스에 A가 있다" 라고 부르는 것과 마찬가지입니다.

 

그렇다면, 저희는 배열(서랍)에 들어가 있는 값들을 어떻게 말할 수 있을까요?

 

배열에 들어가 있는 것은 A, B 입니다.

array = ["A", "B"]

 

이렇게 되어있다면, 0번째 인덱스의 값은 array[0] 으로 조회할 수 있는데 이 값이 바로 A 입니다.

즉, 우리는 인덱스를 이용해서 배열의 원소 값들을 일일이 조회할 수 있는 것입니다.

 

이렇게 array[0], array[1] 처럼 배열의 값을 조회하는 방식을 반복문을 이용해서 표현할 수 있습니다.

 

반복문을 사용하는 방식은 크게 두가지가 있는데, 영준님이 질문해주신 것처럼 인덱스를 이용하는 방법과 값을 이용하는 방법이 있습니다.

 

   for i in range(len(array)):
        if array[i] > max_num :
            max_num = array[i]

해당 코드의 경우, len(array) 만큼의 길이 구간들을 i에 넣어주는 인덱스를 뽑아내는 방식이고,

 

    for num in array:
        if num > max_num:
            max_num = num

해당 코드의 경우에는 배열 내의 원소 값을 num 에 넣어주는 값을 뽑아내는 방식입니다.

 

한 번, for 문을 직접 작성해보고, 출력해보시면 그 차이를 더 극명하게 이해하실 수 있을거에요!

 

또 질문있으시면 편하게 질문해주세요 __

딩코딩코님의 프로필 이미지
딩코딩코
지식공유자

참고로 해당 내용은

단 60분! 파이썬 핵심 개념 초압축 강의 - 이론보다 이해 중심

강의에 담겨져 있어서, 한 번 보시고 오시는 것도 추천드립니다!

이영준님의 프로필 이미지
이영준

작성한 질문수

질문하기