본문 바로가기

알고리즘 & 문제풀이

프로그래머스 - L2 최댓값과 최솟값

아직 많이 부족하나 레벨 2 관련 문제들도 시작하였습니다 하하!

설계

문자열을 split하여 나눠 순회하여 min, max 판별하기!

git : 최댓값과 최솟값

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


문제 풀이

설계대로 진행하였으며, 음수 문자의 Int 캐스팅 또한 지원합니다!

func solution(_ s:String) -> String {
    let splitArray = s.split(separator: " ")
    
    var min = Int.max
    var max = Int.min
    
    splitArray.forEach{ item in
        guard let number = Int(item) else {
            return
        }
        
        if(min > number) {
            min = number
        }
        if ( max < number ) {
            max = number
        }
    }
    
    return "\(min) \(max)"
}

글을 쓰면서 생각이 된 부분인데 문제에 숫자에 대한 범위 값이 나타나지 않아, Int 범위를 초과하는 문자인 경우 동작이 안될 거 같습니다. UInt를 활용하면 더 넓은 범위를 확인 가능하나 음수를 따로 생각해줘야 할 거 같습니다.

다른 사람 풀이 분석

프로그래머스 - 한석호 , 여정수


func solution(_ s:String) -> String {
    let intArr:[Int]=s.split(separator: " ").map({Int($0)!});
    return String(intArr.min()!)+" "+String(intArr.max()!);
}

map, min, max를 활용한 방법입니다!

min, max 메소드에서 순환하여 반환해주지 않을거 같으나, 갑자기 궁금하니 한번 구현부를 확인해봐야네요~

금일도 모두들 화이팅입니다 :)

정리

문제에 제시되는 범위! 그냥 넘어가서는 안된다~


'알고리즘 & 문제풀이' 카테고리의 다른 글

알고리즘 - Big-O  (0) 2023.02.17
프로그래머스 - L2 피보나치 수  (0) 2023.02.17
프로그래머스 - L1 기사단원의 무기  (0) 2023.02.15
프로그래머스 - L1 숫자 짝꿍  (0) 2023.02.14
Queue- 자료구조  (0) 2023.02.06