[프로그래머스] 코딩테스트 연습 - 연습문제 Level 2 최댓값과 최솟값

uoahy·2021년 9월 28일
0

Solution.java

import java.util.*;

class Solution {
    public String solution(String s) {
        String answer = "";
        
        String[] tmp = s.split(" ");
        Arrays.sort(tmp, new MyComparator());
        
        answer = tmp[0] + " " + tmp[tmp.length - 1];
        
        for (String test : tmp) System.out.println(test);
        
        return answer;
    }
}

class MyComparator implements Comparator<String> {
    public int compare(String s1, String s2) {
        if (s1.charAt(0) == '-' && s2.charAt(0) == '-') return s2.compareTo(s1);
        if (s1.charAt(0) == '-') return -1;
        if (s2.charAt(0) == '-') return 1;
        return s1.compareTo(s2);
    }
}

제출하니 절반이 틀렸다고 나왔다. 이유를 모르겠다.

다음에 다시 도전해봐야겠다.


Solution.java (수정)

import java.util.*;

class Solution {
    public String solution(String s) {
        String answer = "";
        
        String[] tmp = s.split(" ");
        int[] num = new int[tmp.length];
        
        for (int i = 0; i < num.length; i++) num[i] = Integer.parseInt(tmp[i]);
        
        Arrays.sort(num);
        
        answer = num[0] + " " + num[num.length - 1];
        
        return answer;
    }
}

그냥 parseInt를 써서 다 숫자로 바꿔주고 정렬시키니까 해결됐다.

처음에 String으로 Comparator를 구현해서 풀었을때는 compareTo가 앞에서부터 비교해나가는 방식이라 자릿수가 차이나면 잘못 정렬될때가 있었다.

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

0개의 댓글