공부/프로그래머스

[프로그래머스 Lv. 2] 최댓값과 최솟값 - JAVA

해니0 2024. 8. 11. 08:00

문제

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

class Solution {
    public String solution(String s) {
        String answer = "";
        return answer;
    }
}

 

제한사항

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

 

입출력 예

s return
"1 2 3 4"' "1 4"
"-1 -2 -3 -4" "-4 -1"
"-1 -1" "-1 -1"

문제 풀이

분석

공백으로 구분이 되어있는 문자열을 배열로 변환

문자열 배열의 인덱스를 정수로 형변환

배열의 숫자를 순회하며 최소값과 최대값 찾기

 

내 소스 코드

class Solution {
    public String solution(String s) {
        // 공백으로 구분된 문자열을 숫자 배열로 변환
        String[] arr = s.split(" ");
        
        // 첫 번째 숫자를 기준으로 최소값과 최대값 초기화
        int min = Integer.parseInt(arr[0]);
        int max = Integer.parseInt(arr[0]);

        // 배열의 나머지 숫자를 순회하며 최소값과 최대값 찾기
        for (String numStr : arr) {
            int num = Integer.parseInt(numStr);
            if (num > max) max = num;
            if (num < min) min = num;
        }

        // 최소값과 최대값을 반환
        return min + " " + max;
    }
}

 

다른 풀이 1

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));
    }
}

 

추가로 고민 할 부분

비슷한 방식으로 풀었다.

sort 함수도 활용할 수 있다.

 


Lv.2  / Java / 연습문제

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges