Study/파이썬[Python]

파이썬[Python] 002. 최댓값의 위치 구하기

jaeyeong 2022. 2. 28. 21:56

어제는 파이썬으로 최댓값을 구하는 방법을 찾아보았습니다.

오늘은 최댓값의 위치를 구해보려고 합니다.

 

그전에 최댓값 구하는 코드를 복습해보겠습니다.

def max(a)
	max_value=a[0]
    	for i in range(1,len(a)):
    	if a[i]>max_value :
        	max_value=a[i]
    return max_value

왜 위와 같은 코드가 나오는지 잘 모르시겠다면

https://jae-yeong.tistory.com/2 글을 참고해주세요 =)


먼저 최댓값을 구할 때 a[0]을 기준으로 비교했던 것과 같이 비교 대상이 필요한데요,

위치를 반환받아야 하기 때문에 인덱싱을 활용해보겠습니다.

 

1. 최댓값의 위치를 출력하는 함수를 정의합니다

2. 인덱싱 범위를 반환해줄 변수 x를 지정하고 0으로 둡니다.

3. 그 이후 과정은 최댓값을 구하는 것과 동일하게 진행합니다.

def max_place(a):
	x=0
    for i in range(1,len(a)):
    	if a[i]>a[x]:
        	x=i
        return x+1

x는 0으로 두었기 때문에 처음 for문을 시작할 땐 a[1]와 a[x] 즉, a[0]을 비교하게 됩니다.
a[1]다음엔 a[2]와 비교하고, a[3], a[4]... 차례대로 비교됩니다.
이때 a[0]보다 더 큰 수가 발견된다면 x는 0에서 교체가 되는 것이죠.
예를 들어 i번째 수와 비교했을 때 a[i]가 더 크다면? x는 i로 변환됩니다.

 

여기서 왜 return값이 x가 아닌 x+1인지 궁금할 수 있는데요.

인덱싱 개념을 다시 말씀드리자면 프로그래밍 언어에서 첫 번째는 1이 아닌 0부터 시작합니다.

n개의 수가 있을 때 마지막 수는 우리의 눈으로 볼 땐 n번째이지만, 언어상에선 n-1번째 수가 되는 것이죠

즉, a[n-1] = n번째에 위치한 수가 되고, a[n] = n+1번째에 위치한 수가 됩니다.

 

따라서 return값은 x가 아닌 x+1이 되는 것입니다.

 

그럼 리스트 값을 지정하고 위치를 구해봅시다!

a = [1, 14, 5, 2, 12, 6]
print(max_value(a))
>>> 2

값이 잘 나오네요 =)

 

혹시 이해가 잘 안 된다거나 수정할 부분이 있다면 언제든지 댓글 남겨주세요!^0^