STUDY/프로그래머스 코딩테스트

[연습문제] 최댓값과 최솟값

bameh 2022. 9. 29. 03:37

[문제 설명]

문자열 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"

 

 

 

[문제 풀이]

import java.util.*;
class Solution {
    public String solution(String s) {        
        // 공백을 이용해서 값을 자르고 배열에 넣기
        String[] arrS = s.split(" ");
        
        // int 배열로 변환
        int[] arrI = new int[arrS.length];
        for(int i=0; i<arrS.length; i++) 
            arrI[i] = Integer.parseInt(arrS[i]);
                
        Arrays.sort(arrI);
        
        int max = arrI.length;
        
        String answer = arrI[0] + " " + arrI[max-1];
        return answer;
    }
}

처음에는 단순하게 문자열 배열에서 정렬한 후 값을 비교하려고 했으나

문자열 배열일 때에는 -1보다 -4가 큰 수로 정렬이 되어 int형으로 변경해야했다.

변경하고 보니 불필요한 변환이 많아서 방법을 다르게 생각했다.

어차피 정렬할거라면 숫자의 배열로 변경하고 그 배열을 정렬한 후, 맨 앞과 맨 뒤의 값만 출력시키는 것으로 작성했다.