파이썬에서 리스트의 최댓값을 구하는 코드는 max 연산자만 붙이면 간단히 사용할 수 있다.
그렇지만, 리스트에서 최대값이 여러개라면 여러개를 모두 리턴하는 것이 아닌
리스트에서 가장 앞에 있는 값이 리턴된다.
다음 배열에서 최댓값인 4는 4번째와 7번째에 위치해있지만
출력해보면 3만 출력 되는 것을 확인할 수 있다.
list_num = [1,2,3,4,3,2,4]
print(list_num.index(max(list_num)) + 1) #4
그렇다면, 모든 최댓값의 인덱스를 구하려면? 값을 하나하나 비교해보면 된다!
첫번째 방법은 간단하게 for 문을 이용해서 구할 수 있다.
list_num = [1,2,3,4,3,2,4]
answer = []
for i in range(len(list_num)):
if list_num[i] == max(list_num):
answer.append(i + 1)
print(answer) #[4, 7]
두번째 방법은 리스트의 인덱스와 원소의 값에 동시에 접근하면서 반복문을 돌리는 enumerate 함수를 활용할 수 있습니다.
기존의 리스트 값의 최대값을 먼저 m 변수에 저장해놓고,
값을 하나씩 비교하면서 최대값과 같은 인덱스 값을 리스트로 저장한다.
그러면 동일하게 배열의 최댓값의 인덱스를 모두 구할 수 있다!
m = max(list_num)
answer = [index + 1 for index, val in enumerate(list_num) if val == m]
print(answer) #[4, 7]
참고로, 프로그래머스의 모의고사 문제를 풀다가 이 코드가 필요하여 작성하게 되었다!
https://programmers.co.kr/learn/courses/30/lessons/42840
코딩테스트 연습 - 모의고사
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는
programmers.co.kr
'알고리즘' 카테고리의 다른 글
[백준] 1002번 - 터렛 (0) | 2022.02.17 |
---|---|
[백준] 2583번 - 영역 구하기 (DFS / BFS) (0) | 2022.02.16 |
[프로그래머스] 연습문제 - 나누어 떨어지는 숫자 배열 (0) | 2022.01.18 |
[Python] itertools 주요 클래스 (permutations, combinations ... ) (0) | 2022.01.15 |
[프로그래머스] 2020 KAKAO 인턴십 (Lv1) : 키패드 누르기 (0) | 2022.01.12 |