본문 바로가기
프로그래머스 Algorithm

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

by Echung 2023. 11. 28.

안녕하세요. 이번에는 프로그래머스 최댓값과 최솟값 문제를 풀어보려고 합니다.

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


Problem

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

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

 

[제한 사항]

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

사진 1. 입출력 예

Solution

class Solution {
    fun solution(s: String): String {
        var answer = ""
        
        var list = s.split(" ")
        var max: Int = Integer.MIN_VALUE
        var min: Int = Integer.MAX_VALUE
        
        for(i in list) {
            val num: Int = i.toInt()
            
            if(num > max) {
                max = num
            }
            if(num < min) {
                min = num 
            }
        }
        
        answer = "$min $max"
        
        return answer
    }
}

 이번문제는 주어진 입력을 for문으로 문제를 해결하였습니다.

 

코드 동작

1. split() 기능을 통해서 list로 만듭니다.

2. max와 min에 각각 최솟값과 최댓값을 넣어줍니다.

3. for문을 통해서 list를 돌면서 min값과 max값을 최소 최대로 넣어줍니다. 

 

1. 다른 사람 코드

class Solution {
    fun solution(s: String): String = s.split(" ").map { it.toInt() }.let { "${it.minOrNull()} ${it.maxOrNull()}" }
}

  이번 문제도 1줄로 작성된 코드가 있어서 공부용으로 첨부해 봅니다. 

 

코드 동작 

1. spilit(" ")을 사용해서 List로 반환해줍니다.

2. List를 map을 통해서 int로 만들어줍니다.

3. let을 사용해서 minOrNull()maxOrNull()을 사용해서 최솟값과 최댓값을 출력해 줍니다.

 

이렇게 코드가 작동됩니다. let을 사용해서 마지막 결괏값을 출력하도록 만든 것을 보고 let을 활용할 수 있다는 것을 알 수 있었습니다.  


Performance

1. 내가 작성한 코드 2. 다른 사람 코드

 

반응형