코딩테스트 연습/프로그래머스
[ 프로그래머스 ] Lv2 연습문제 > 최대값과 최솟값 ( 자바 )
아뜨으츄
2020. 6. 29. 00:16
문제 설명
문자열 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;
}
}
실행 결과도 잘 나온다.