본문 바로가기
알고리즘/코딩 - 프로그래머스

[Java][프로그래머스][Level 2] 최댓값과 최솟값 - 2가지 방법

by 주남2 2019. 5. 25.
반응형

문제 설명

문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 (최소값) (최대값)형태의 문자열을 반환하는 함수, solution을 완성하세요.
예를들어 s가 1 2 3 4라면 1 4를 리턴하고, -1 -2 -3 -4라면 -4 -1을 리턴하면 됩니다.

 

제한 조건

  • s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.

생각

단지 최대 최소만 빠르게 구하면 된다! 그래서 2가지 방법을 생각해봤다. 하나는 Collections를 이용하는 것과 최대 최솟값을 직접 구하는 것!

 

Collections.max/min(int[] arr)을 넣어주면 알아서 최대 최소값이 나온다. 직접 구하려면 최대 최소값을 배열의 첫 번째 값이라고 가정하고 for문을 돌면서 만약 max,min 보다 크거나 작으면 그 값을 갱신해주면서 구하면 된다.

 

코드

1. Collections 이용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.*;
 
class Solution {
  public String solution(String s) {
      String answer = "";
      ArrayList<Integer> arr = new ArrayList<Integer>();
      String[] str = s.split(" ");
 
      for(int i=0; i<str.length; i++) {
          arr.add(Integer.parseInt(str[i]));
      }
 
      answer = "" + Collections.min(arr) + " " + Collections.max(arr);
 
      return answer;
  }
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
 

2. 직접 최대, 최소 구하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
  public String solution(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;
 
  }
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
 
반응형