[Java 알고리즘] 최대값과 최소값, 프로그래머스 level2
- 알고리즘 문제/[Java] 알고리즘
- 2019. 9. 18. 17:37
최댓값과 최솟값
문제 설명
문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 (최소값) (최대값)형태의 문자열을 반환하는 함수, solution을 완성하세요.
예를들어 s가 1 2 3 4라면 1 4를 리턴하고, -1 -2 -3 -4라면 -4 -1을 리턴하면 됩니다.
제한 조건
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 answer = "";
String[] temp = s.split(" ");
OptionalInt min = Arrays.stream(temp).flatMapToInt(data -> {
int[] temp2 = new int[temp.length];
for(int i =0; i<temp.length; i++) {
temp2[i] = Integer.parseInt(temp[i]);
}
return Arrays.stream(temp2);
}).min();
OptionalInt max = Arrays.stream(temp).flatMapToInt(data -> {
int[] temp2 = new int[temp.length];
for(int i =0; i<temp.length; i++) {
temp2[i] = Integer.parseInt(temp[i]);
}
return Arrays.stream(temp2);
}).max();
answer = String.format("%s %s", min.getAsInt(), max.getAsInt());
return answer;
}
}
- 스트림으로 처리하였음.
- OptionalInt 타입은 getAsInt()로 int 타입으로 변경하여야함.
- 스트림 받아서 최소값과 최대값을 구해서 스트링으로 반환해주면 됨.
- 주의 : 스트림은 1번에 1번만 실행할 수 있으므로 min 스트림 1번, max 스트림 1번 이렇게 같은 내용이라도 따로 수행해주어야한다. 재사용이 안된다.
'알고리즘 문제 > [Java] 알고리즘' 카테고리의 다른 글
[Java 알고리즘] 프로그래머스 알고리즘 문제풀이(java), 피보나치 수 (1) | 2019.09.19 |
---|---|
[Java 알고리즘] 타겟 넘버, 프로그래머스 알고리즘 level2 (0) | 2019.09.18 |
[Java 알고리즘] 제일 작은 수 제거하기, 프로그래머스 level1 (1) | 2019.09.18 |
[Java 알고리즘] JadenCase 문자열 만들기, Programmers 문제풀이 level2 (0) | 2019.09.17 |
[Java] 자바 알고리즘, 모의고사 level1 (0) | 2019.09.16 |