코딩테스트/JAVA

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

할루솔이 2023. 6. 4. 22:22
반응형

문제 설명
문자열 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 answer = "";
        String[] str = s.split(" "); //공백을 기준으로 나눠주기. -도 문자열로 들어가기때문에 나눠주는 것.
        int[] arr = new int[str.length];
        for(int i=0;i<arr.length;i++){
            int num = Integer.parseInt(str[i]);
            arr[i] = num;
        }
        Arrays.sort(arr);
        
        int min_num = arr[0];
        int max_num = arr[arr.length-1];
        
        answer = String.valueOf(min_num) + " " + String.valueOf(max_num);
        return answer;
    }
}

 

처음에 charAt()으로 분리했는데 '-'도 하나씩 구분이 되었다..문자열이라는 걸 잊고있었어..

고민끝에 공백을 기준으로 분리!! 

split(" ") 해주니까 -3 -4 이렇게 배열에 잘 들어갔다.

그대로 정렬해주고 실행했는데 -가 붙은 배열만 오류가 났다.

이 배열만 정렬이 안됐어..

이건 배열이 String타입이어서 그런 것 같길래 바로 int 배열에 넣어주었다.

다시 정렬하고 제일 앞에 있는 데이터를 최솟값에 넣어주고, 제일 마지막에 있는 데이터를 최댓값에 넣어주었다.

answer은 문자열이니까 String.valueOf()로 변환해주고, 공백도 넣어준 뒤 실행하니

성!공!

반응형