갱스터하우스

[Python] Lv2.최댓값과 최솟값 본문

코테 문제/프로그래머스

[Python] Lv2.최댓값과 최솟값

승갱 2022. 4. 30. 22:14

https://programmers.co.kr/learn/courses/30/lessons/12939

 

코딩테스트 연습 - 최댓값과 최솟값

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

programmers.co.kr

 

 

 

 

 

 

문제 설명

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

 

제한조건

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

 

입출력 예

s return
"1 2 3 4" "1 4"
"-1 -2 -3 -4" "-4 -1"
"-1 -1" "-1 -1"

 

나의 접근방법 및 풀이

문제를 보자마자 split()를 사용해야겠다고 생각했다.

그리고 min()과 max()를 사용해서 answer를 구성하려고 했는데, 뭔가 너무 쉽게(?) 접근하는 느낌이 들어서 슬라이싱을 이용했다. min(), max()를 이용하면 정렬을 하지 않아도 되지만, 슬라이싱을 이용하려면 정렬을 해야 하기 때문에, sorted()를 사용했다.

def solution(s):
    answer = ''
    tmp = sorted(list(map(int,s.split())))
    answer += str(tmp[0])+" "+str(tmp[-1])
    
    return answer

min(), max() 이용

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

그리고 여기서 유의해야 할 점이 두 가지 있는데, 첫 번째는 split()를 사용할 때 int형으로 나누기 위해 map()을 이용해야 한다는 점이다. 

tmp = list(int(s.split()))	## X

tmp = list(map(int,s.split())) 	## O

두 번째는 answer에 최솟값과 최댓값을 저장할 때, 해당 값을 str로 변환해야 되는 점이다. 우리야 최솟값 따로 최댓값 따로 붙인다고 이해하지만, 컴퓨터에서는 '숫자'로 받아들여 '연산'을 하려고 하기 때문에(중간에 공백 때문에 오류가 발생하지만) str로 형 변환을 해주어야 한다.

answer += tmp[0]+" "+tmp[-1]	 ##  X

answer += str(tmp[0])+" "+str(tmp[-1])	##  O

 

'코테 문제 > 프로그래머스' 카테고리의 다른 글

[Python] Lv2. 스킬트리  (0) 2022.05.03
[Python] Lv2.올바른 괄호  (0) 2022.05.03
[Python] Lv2. 피보나치수  (0) 2022.04.30
[Python] Lv1.최소직사각형  (0) 2022.04.19
[Python] Lv1. [1차] 다트 게임  (0) 2022.04.19