[Java 알고리즘] 최대값과 최소값, 프로그래머스 level2

최댓값과 최솟값
문제 설명

문자열 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번 이렇게 같은 내용이라도 따로 수행해주어야한다. 재사용이 안된다.

댓글

Designed by JB FACTORY