[프로그래머스,Level 2] 최댓값과 최솟값 (JAVA 구현)
코테/프로그래머스(Programmers)

[프로그래머스,Level 2] 최댓값과 최솟값 (JAVA 구현)

반응형

- 첫 풀이 및 정답풀이

  레벨 2의 문제라고 생각되지 않는 간단한 문제였다. 문자열로 주어지는 정수의 나열들 중 최댓값과 최솟값을 찾아 반환하면 되는 문제로, 정렬 후 0번 인덱스와 마지막 인덱스를 반환하면 되는 문제이다. 단, 문제는 정렬하는 방식에 있어서의 선택일 것이다. 필자는 Comparator인터페이스를 애용하므로 이를 활용해 정렬하였다. 

 

  처음에는 Comparator 인터페이스를 오버 라이딩하여, 문자열을 비교하는 메소드인 compareTo를 사용하는 방식을 시도했었는데, 음수의 경우 -와정 수로 구분되기 때문에 한 문자열에 양의 정수와 음의 정수가 함께 있는 문자열로 인해 실패하는 테스트 케이스가 존재했다. 따라서 그냥 비교하는 문자열들을 정수로 변환하여 Integer.compare() 메소드를 이용해 정렬하였다.

 

import java.util.Arrays;
import java.util.Comparator;

class Solution {
    public String solution(String s) {
        String answer = "";
        // 1. 문자열 공백으로 구분하여 배열에 저장.
        String str[] = s.split(" ");
                
        // 2. Arrays.sort() 메소드에 Comparator 인터페이스를 오버라이딩하여 정렬 기준 제공.
        Arrays.sort(str,new Comparator<String>(){
                       
            // 3. 오버라이딩.
            public int compare(String o1, String o2){
                // 4. o1이 o2보다 작다면 자리를 바꾼다. 즉, 오름차순 정렬.                                     
                return Integer.compare(Integer.parseInt(o1),Integer.parseInt(o2));
            }
        });
        
        // 5. 0번 : 최솟값, str.length-1 : 최댓값.
        answer = str[0] +" "+str[str.length-1];   
        
        return answer;
    }
}

 

반응형