프로그래머스(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( )을 사용할 경우 숫자가 아닌 순서로 인식하게 된다. (즉 정렬이 안된다)