최댓값과 최솟값

신연우·2021년 2월 11일
0

알고리즘

목록 보기
34/58
post-thumbnail

프로그래머스 - 최댓값과 최솟값

문제 설명

문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요.

예를 들어, s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다.

제한 조건

  • s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.

입출력 예

sreturn
"1 2 3 4""1 4"
"-1 -2 -3 -4""-4 -1"
"-1 -1""-1 -1"

풀이

def solution(s):
    s = s.split()
    s.sort(key=lambda x: int(x))

    max_num = s[-1]
    min_num = s[0]

    return min_num + ' ' + max_num

해결 과정

정수 파싱하기

공백으로 구분되어 있는 각 정수들을 파싱해야 하므로 split 메서드를 사용하여 정수를 파싱한다.

오름차순 정렬하기

파싱한 정수들을 오름차순으로 정렬하면 최솟값과 최댓값을 쉽게 구할 수 있다.

다만, 문자열이기 때문에 정렬할 때 key 속성을 통해 int로 변환한 값을 토대로 정렬해야 한다.

그렇지 않으면 음의 정수의 정렬 시 결과가 이상하게 나온다(문자열은 아스키코득 값을 기준으로 정렬하므로 "-1"이 "-4"보다 작은 값으로 정렬된다).

최솟값과 최댓값 구하기

최댓값은 오름차순 정렬을 진행한 배열의 가장 마지막에, 최솟값은 가장 처음에 정렬되어 있다.

다른 사람의 풀이

def solution(s):
    s = list(map(int,s.split()))
    return str(min(s)) + " " + str(max(s))

map을 통해 미리 split 메서드를 통해 파싱한 문자들을 int로 바꿀 수 있다. 이렇게 하면 정렬 과정을 거치지 않고 minmax 함수로 최솟값과 최댓값을 구할 수 있다.

profile
남들과 함께하기 위해서는 혼자 나아갈 수 있는 힘이 있어야 한다.

0개의 댓글