[오늘의 문제] 가장 큰 수 찾기

shlim55·2025년 10월 21일

코딩테스트

목록 보기
156/223

출처: https://school.programmers.co.kr/learn/courses/30/lessons/120899?language=python3

문제 설명
정수 배열 array가 매개변수로 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

제한사항
1 ≤ array의 길이 ≤ 100
0 ≤ array 원소 ≤ 1,000
array에 중복된 숫자는 없습니다.
입출력 예
array result
[1, 8, 3][8, 1]
[9, 10, 11, 8][11, 2]
입출력 예 설명
입출력 예 #1

1, 8, 3 중 가장 큰 수는 8이고 인덱스 1에 있습니다.
입출력 예 #2

9, 10, 11, 8 중 가장 큰 수는 11이고 인덱스 2에 있습니다.

내가 작성한 코드문

def solution(array):
    answer = [0,0]
    answer[0] = max(array)
    answer[1] = array.index(answer[0])
    
    return answer

간단하게 max 함수로 최댓값을 구하고 최댓값의 인덱스 또한 index함수로 구함.

다른 사람의 풀이

def solution(array):
    return [max(array), array.index(max(array))]
def solution(array):
    val = max(array)
    return [val, array.index(val)]

더 간결한 풀이다.

def solution(array):
    return sorted([[a, i] for i, a in enumerate(array)])[::-1][0]

enumerate(array): 배열의 각 요소에 대해 인덱스와 값을 쌍으로 반환하는 이터레이터를 생성
예를 들어, array = [10, 5, 20]이면 (0, 10), (1, 5), (2, 20)이 나온다.

sorted(...): 위에서 만든 리스트를 정렬
Python은 리스트 안에 리스트가 있을 때, 기본적으로 첫 번째 요소를 기준으로 정렬하고, 첫 번째 요소가 같으면 두 번째 요소를 기준으로 정렬한다.
여기서 리스트의 형태가 [값, 인덱스]이므로, 리스트는 값을 기준으로 오름차순(작은 값 \rightarrow 큰 값) 정렬된다.

예: [[10, 0], [5, 1], [20, 2]] \rightarrow [[5, 1], [10, 0], [20, 2]]

def solution(array):
    answer = [0, 0]
    num = array[0]
    for i in range(len(array)):
        if num < array[i]:
            num = array[i]
            answer[0] = num
            answer[1] = i
    return answer

자바 처럼 알고리즘을 활용한 풀이다.
반복문과 최댓값 변수를 활용한 풀이

profile
A Normal Programmer

0개의 댓글