본문 바로가기

Algorithm & SQL/Programmers

[Algorithm] [Python/Swift] Programmes - 최댓값과 최솟값

Programmers - 최댓값과 최솟값

 

문제 설명


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

 

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

 

제한 조건


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

 

입출력 예


image

제출 코드


Python

 

1차 제출 코드

def solution(s):
    s = list(s.replace(" ",""))[::-1]
    arr = []

    for i in range(len(s)):
        if s[i] == '-':
            arr[-1] = arr[-1] * -1
        else:
            arr.append(int(s[i]))

    return str(min(arr)) + " " + str(max(arr))

뭐지, 뭐가 잘못된거지..

 

최종 제출 코드

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

 

Swift

func solution(_ s:String) -> String{    
    let arr = s.split(separator: " ").map { Int($0)! }    
    return "\(arr.min()!) \(arr.max()!)" 
}

 

문제 풀이


  1. 빈칸을 기준으로 split하며 동시에 값을 Int 타입으로 map한다. (map 내장 함수가 음수까지 처리가 가능한지 몰랐다..)

  2. 배열 내 최소값과 최대값을 반환한다.

Swift 고차함수에 대해서 한번 정리해야겠다.