프로그래머스(LV2)

[프로그래머스][Python] 최댓값과 최솟값

메가구글 2023. 3. 6. 18:36

1. 문제설

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

 

  • 제한조건 : s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.
  • 입출력 예시 
    "1 2 3 4" "1 4"
    "-1 -2 -3 -4" "-4 -1"
    "-1 -1" "-1 -1"

 

 

2. 문제풀이

def solution(s):
    #문자열 s를 정렬시키기 위해 int형 리스트로 변환
    #answer[0]과 answer[-1]를 이용해 처음과 끝을 가져온다
    answer = list(map(int , s.split(' ')))
    answer.sort()
    return str(answer[0]) + ' ' + str(answer[-1])

 

이 문제의 핵심 함수

  • split( )을 이용하여 공백을 기준으로 문자열을 리스트로 바꾼다.
  • map( )을 이용하여 split( )을 이용해 변환한 문자열을 int형으로 바꿔준다. 
  • sort( )을 이용하여 int형으로 바꾼 리스트를 정렬한다.

 

 

 

3. 내가 접근한 잘못된 풀이

def solution(s):
    answer = s.split(' ')
    answer.sort()
    return answer[0] + ' ' +answer[-1]

 

잘못된 이유

  • 문자열 s를 공백을 기준으로 split( )을 사용했지만 answer는 여전히 문자열의 리스트이다.
  • 따라서 answer를 숫자가 아닌 문자열을 기준으로 sort( ) 정렬을 하여 정렬되지 않는다.
  • 문자열 기준으로 sort( )을 사용할 경우 숫자가 아닌 순서로 인식하게 된다. (즉 정렬이 안된다)