이전 포스팅: 최댓값과 최솟값 (자바)
class Solution {
public String solution(String s) {
String[] str = s.split(" ");
int max = Integer.valueOf(str[0]);
int min = Integer.valueOf(str[0]);
for(String num : str) {
max = Math.max(max, Integer.valueOf(num));
min = Math.min(min, Integer.valueOf(num));
}
String answer = "";
answer = min + " " + max;
return answer;
}
}
이전 풀이는 stream 을 이용해서 한줄로 풀이하였다.
코드는 가독성 있게 작성하여 누구나 쉽게 해석 할 수 있도록 만들어야하며,
성능도 고려해서 작성해야한다.
stream으로 한줄로 작성하는게 멋지다(?)라고 느낄 수는 있겠지만 나는 오늘의 풀이가 더 좋은 풀이라고 생각한다.
public class GetMinMaxString {
public String getMinMaxString(String str) {
String[] tmp = str.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) {
String str = "1 2 3 4";
GetMinMaxString minMax = new GetMinMaxString();
//아래는 테스트로 출력해 보기 위한 코드입니다.
System.out.println("최대값과 최소값은?" + minMax.getMinMaxString(str));
}
}
특별한 풀이라기보단 min = max = Integer.parseInt(tmp[0]);
이 부분이 특이했다.
같은 값을 넣는거라면 저렇게도 초기화 할 수 있구나?!
import java.util.Arrays;
public class GetMinMaxString {
public String getMinMaxString(String str) {
String[] array = str.split(" ");
int[] arrayInt = new int[array.length];
for (int i = 0; i < arrayInt.length; i++) {
arrayInt[i] = Integer.parseInt(array[i]);
}
Arrays.sort(arrayInt);
String result = arrayInt[0] + " " + arrayInt[arrayInt.length - 1];
return result;
}
public static void main(String[] args) {
String str = "9 19";
GetMinMaxString minMax = new GetMinMaxString();
// 아래는 테스트로 출력해 보기 위한 코드입니다.
System.out.println("최대값과 최소값은?" + minMax.getMinMaxString(str));
}
}
이렇게 int[]
를 만들어놓고 정렬을 수행한다면 속도는 가장 빠르겠다..!!