[프로그래머스] Lv.2 최댓값과 최솟값 (python)

채채·2023년 12월 10일
0
post-thumbnail

✅ 문제 링크

최댓값과 최솟값


✅ 문제 설명

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

✅ 제한사항

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

✅ 입출력 예

sretrurn
"1 2 3 4""1 4"
"-1 -2 -3 -4""-4 -1"
"-1 -1""-1 -1"

✅ 나의 풀이

  1. 문자열 입력을 공백을 기준으로 나누어 배열에 저장 (split() 사용)
  2. min, max 함수를 통해 최소/최대값 가져오기
  3. 값을 다시 str로 형변환후 return

✅ CODE

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

✅ 시간복잡도

테스트 1 〉	통과 (0.03ms, 10.4MB)
테스트 2 〉	통과 (0.04ms, 10.3MB)
테스트 3 〉	통과 (0.03ms, 10.3MB)
테스트 4 〉	통과 (0.03ms, 10.3MB)
테스트 5 〉	통과 (0.03ms, 10.4MB)
테스트 6 〉	통과 (0.03ms, 10.3MB)
테스트 7 〉	통과 (0.02ms, 10.2MB)
테스트 8 〉	통과 (0.03ms, 10.2MB)
테스트 9 〉	통과 (0.02ms, 10.2MB)
테스트 10 〉	통과 (0.03ms, 10.4MB)
테스트 11 〉	통과 (0.02ms, 10.3MB)
테스트 12 〉	통과 (0.04ms, 10.2MB)
  • max(), min() 의 경우 시간복잡도가 O(n)
  • 반복문 안에서는 사용을 지양하는 게 좋다

✅ 다른 풀이

  • list를 sorting하여 가장 앞의 값과 가장 뒤의 값으로 접근
  • sort() 의 시간 복잡도 nlogn
  • 인덱스로 배열 접근 list[i] 시간 복잡도 1
  • 배열의 길이가 너무 길어지거나, 반복문 사용 시 이 방법이 더 좋겠다.
profile
성장하는 사람

0개의 댓글