최댓값과 최솟값 (자바) v2

김재현·2024년 5월 19일
0

알고리즘 풀이

목록 보기
87/89
post-thumbnail

이전 포스팅: 최댓값과 최솟값 (자바)

문제

정답 풀이

class Solution {
    public String solution(String s) {
        
        
        String[] str = s.split(" ");
        int max = Integer.valueOf(str[0]);
        int min = Integer.valueOf(str[0]);
        for(String num : str) {
            max = Math.max(max, Integer.valueOf(num));
            min = Math.min(min, Integer.valueOf(num));
        }

        String answer = "";
        
        answer = min + " " + max;
        
        return answer;
    }
}

이전 풀이는 stream 을 이용해서 한줄로 풀이하였다.

코드는 가독성 있게 작성하여 누구나 쉽게 해석 할 수 있도록 만들어야하며,
성능도 고려해서 작성해야한다.

stream으로 한줄로 작성하는게 멋지다(?)라고 느낄 수는 있겠지만 나는 오늘의 풀이가 더 좋은 풀이라고 생각한다.

다른 사람 풀이

public class GetMinMaxString {
    public String getMinMaxString(String str) {
        String[] tmp = str.split(" ");
        int min, max, n;
        min = max = Integer.parseInt(tmp[0]);
        for (int i = 1; i < tmp.length; i++) {
                n = Integer.parseInt(tmp[i]);
            if(min > n) min = n;
            if(max < n) max = n;
        }

        return min + " " + max;

    }

    public static void main(String[] args) {
        String str = "1 2 3 4";
        GetMinMaxString minMax = new GetMinMaxString();
        //아래는 테스트로 출력해 보기 위한 코드입니다.
        System.out.println("최대값과 최소값은?" + minMax.getMinMaxString(str));
    }
}

특별한 풀이라기보단 min = max = Integer.parseInt(tmp[0]); 이 부분이 특이했다.
같은 값을 넣는거라면 저렇게도 초기화 할 수 있구나?!

다른 사람 풀이 2

import java.util.Arrays;

public class GetMinMaxString {
   public String getMinMaxString(String str) {

       String[] array = str.split(" ");
       int[] arrayInt = new int[array.length];

       for (int i = 0; i < arrayInt.length; i++) {
           arrayInt[i] = Integer.parseInt(array[i]);
       }

       Arrays.sort(arrayInt);
       String result = arrayInt[0] + " " + arrayInt[arrayInt.length - 1];

       return result;

   }

   public static void main(String[] args) {
       String str = "9 19";
       GetMinMaxString minMax = new GetMinMaxString();
       // 아래는 테스트로 출력해 보기 위한 코드입니다.
       System.out.println("최대값과 최소값은?" + minMax.getMinMaxString(str));
   }
}

이렇게 int[]를 만들어놓고 정렬을 수행한다면 속도는 가장 빠르겠다..!!

profile
I live in Seoul, Korea, Handsome

0개의 댓글