-
최댓값 최솟값 찾기알고리즘/프로그래머스 2020. 9. 22. 11:30
문제 :
문자열 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 https://programmers.co.kr/learn/courses/30/lessons/12939
package com.programmers; import java.util.Arrays; public class FindMinMaxNum { public String solution(String s) { /* String answer = ""; String[] arr = s.split(" "); int[] list = new int[arr.length]; for(int i=0; i<arr.length; i++) { list[i] = Integer.valueOf(arr[i]); } //Arrays.sort(list); //answer = list[0] + " " + list[list.length-1]; // 다른 사람 풀이 answer = Arrays.stream(list).min().getAsInt() + " " + Arrays.stream(list).max().getAsInt(); // return Arrays.stream(arr).min().orElse(0) + " " + Arrays.stream(arr).max().orElse(0); return answer; */ String[] tmp = s.split(" "); int min, max, n; min = max = Integer.parseInt(tmp[0]); for (int i = 1; i < tmp.length; i++) { n = Integer.parseInt(tmp[i]); if (min > n) min = n; if (max < n) max = n; } return min + " " + max; } public static void main(String[] args) { FindMinMaxNum findNum = new FindMinMaxNum(); System.out.println(findNum.solution("-1 -2 -3 -4")); } }
Arrays.sort후 값 추출 시 평균 17.119ms Arrays.stream 사용 min, max 추출 시 평균 : 14.778ms 값을 바로 비교 하는 경우 11.024ms 단순하게 값을 바로 비교하는 경우에 시간이 제일 적게 걸렸다. 너무 어렶게 생각하지 말자!
Arrays.stream에 min,max 기능도 있는지 몰랐는데 stream API를 공부해 봐야겠다.