본문 바로가기

코딩테스트 연습/프로그래머스

[ 프로그래머스 ] Lv2 연습문제 > 최대값과 최솟값 ( 자바 )

문제 설명

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

 

StringTokenizer 함수를 이용하여 문자열을 슬라이싱 하는 것이 중요한 문제이다. split을 쓰기도 하지만 StringTokenizer가 빠르다고 알고 있다.

반복문을 돌면서 st.hasMoreTokens()로 더 이상의 잘라질 수 있는 값이 있는지 검사하게 된다. 

진행하면서 max 값과 min값을 탐색하면서 더 큰 값과 작은값을 저장하게 된다. 

이후 마지막 return 시의 string을 위해 min + " " +max를 리턴해주면 최댓값과 최솟값을 구할 수 있다. 

import java.util.*;
class Solution {
    public String solution(String s) {
        String answer = "";
        StringTokenizer st = new StringTokenizer(s);
        int max= Integer.MIN_VALUE;
        int min = Integer.MAX_VALUE;
        while(st.hasMoreTokens()){
            int a  =Integer.parseInt(st.nextToken());
            max = a>max?a:max;
            min = a<min?a:min;
        }
        return min+" "+max;
    }
}

실행 결과도 잘 나온다.