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

최지나·2023년 10월 14일
2

코딩테스트

목록 보기
34/154

문제

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

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

입출력 예

sreturn
"1 2 3 4""1 4"
"-1 -2 -3 -4""-4 -1"
"-1 -1""-1 -1"

문제 출처

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

생각

  • 숫자들이 공백으로 구분되어 있으니 공백을 기준으로 split해서 String Array로 바꾼 뒤, 이를 다시 Integer Array로 바꿔서 정렬하자
  • 정렬된 Integer 배열에서 첫 번쨰와 마지막 숫자를 뽑아 내 형식에 맞게 return하자

코드

import java.util.Arrays;

class Solution {
    public String solution(String s) {
        
        String[] stringArr = s.split(" ");
        int[] intArr = new int[stringArr.length];
        
        for (int i = 0 ; i <  stringArr.length; i++) {
            intArr[i] = Integer.parseInt(stringArr[i]);
        }
        Arrays.sort(intArr);
        
        return intArr[0] + " " + intArr[intArr.length-1];
    }
}

다른 사람의 풀이

class Solution {
    public String solution(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;
    }
}
  • Arrays.sort()를 사용해서 int로 변환된 배열을 정렬한 풀이와 달리, 정렬을 사용하지 않고 반복문을 돌면서 해당 index까지의 최대|최댓값을 동시에 업데이트 해가는 풀이를 기록한다 ✒️✒️
profile
의견 나누는 것을 좋아합니다 ლ(・ヮ・ლ)

0개의 댓글