1 minute read



입출력 예시

Input-1
“1 2 3 4”
Output-1
“1 4”

Input-2
“-1 -2 -3 -4”
Output-2
“-4 -1”

Input-3
“-1 -1”
Output-3
“-1 -1”


문제 풀이

주어진 문자열의 숫자 중에서 최솟값과 최댓값을 찾아야 한다.
문자열을 순회하며 현재 수와 비교하여 가장 크고, 가장 작은 값을 구하면 된다.

한 번 코드로 작성해보자.

1
2
3
String[] arr = s.split(" ");
int max = Integer.parseInt(arr[0]);
int min = Integer.parseInt(arr[0]);

먼저 공백이 포함된 문자열에서 공백을 기준으로 잘라 배열로 만들었고, 최댓값과 최솟값을 저장할 max와 min 변수를 초기화하였다.

1
2
3
4
5
for(int i=0; i<arr.length; i++) {
    if(max < Integer.parseInt(arr[i])) max = Integer.parseInt(arr[i]);
    if(min > Integer.parseInt(arr[i])) min = Integer.parseInt(arr[i]);
}
return min + " " + max;

위에서 자른 배열의 숫자들을 순회하며 최댓값과 최솟값을 구하고 문제 요구사항대로 “(최소값) (최대값)” 형태로 반환하자.


작성 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.util.*;

class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();

        long start = System.currentTimeMillis();
        solution(s);
        long end = System.currentTimeMillis();
        System.out.println("\n수행시간 = " + (end-start));
    }

    public static String solution(String s) {
        String[] arr = s.split(" ");
        int max = Integer.parseInt(arr[0]);
        int min = Integer.parseInt(arr[0]);
        for(int i=0; i<arr.length; i++) {
            if(max < Integer.parseInt(arr[i])) max = Integer.parseInt(arr[i]);
            if(min > Integer.parseInt(arr[i])) min = Integer.parseInt(arr[i]);
        }
        return min + " " + max;
    }
}

회고

  • 이제는 어떻게 최대값과 최소값을 구해야 할지 어느정도 감이 잡힌 것 같다.