[Programmers] #16 가장 큰 수 [JAVA]

 

가장 큰 수

 

문제: https://programmers.co.kr/learn/courses/30/lessons/42746

 

 

 

 

 

 

1. 문제설

 

 

0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.

 

예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.

 

0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.

 

 

 

 

2. 나의 코드

 

- 처음에는 그냥 정수배열을 String 배열로 다 바꾼다음에 Arrays.sort()를 했다. 사전식 정렬을 하면 될 줄 알았으나, 3,30을 원하는 데로 정렬을 하지 못했다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

- 이틀의 고민끝에, 각각의 문자열을 합친것 끼리 비교하여 정렬하면 문제에서 원하는 방식으로 정렬이 가능하다는 것을 깨달았다.

- 따라서, Comparator 클래스를 이용하여 비교 메소드를 만들고, 이를 이용하여 정렬하였다.

ex) 

String o1 ="6", String = "10"일때,

("6"+"10") = "610" , ("10" + "6") ="106" 이므로, 결국 "610" > "106". 

return -1;(앞자리 큰수가 먼저 나와야하므로)을 하여 정렬한다.

 

 

/* return 1 일때, o2가 먼저 나온다.

return 0 일때, 변함없다.

return -1 일때, o1이 먼저 나온다.*/

 

import java.util.*;


class Solution {
    public String solution(int[] numbers) {
        String answer = "";
        String [] num = new String[numbers.length];
        
        for(int i =0;i < num.length;i++) {
            num[i] = String.valueOf(numbers[i]);
        }
        
        Arrays.sort(num,new Mycomp());
        if(num[0].equals("0"))
            answer += "0";
        else{
            for(int j =0;j<num.length;j++){
                answer += num[j];
            }
        }
        
        return answer;
    }
}

//두 개의 문자열을 합친 문자열의 크기를 비교한다.
//내림차순
class Mycomp implements Comparator<String> {
    public int compare(String o1, String o2){
        return (o2+o1).compareTo(o1+o2);
    }
}

 

 

 

 

3. 보완

 

시간 날때, comparator 클래스 다시한번 훑어봐야겠다.

 

[출처] https://dreamhollic.tistory.com/entry/programmers-16-%EA%B0%80%EC%9E%A5-%ED%81%B0-%EC%88%98-JAVA?category=676734

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
898 [Programmers] #19 문자열을 정수로 바꾸기 [Python] 졸리운_곰 2020.03.06 96
897 [Programmers] #18 문자열 내 p와 y의 개수 [Python] 졸리운_곰 2020.03.06 74
896 [Programmers] #17 더 맵게 [JAVA] 졸리운_곰 2020.03.03 79
» [Programmers] #16 가장 큰 수 [JAVA] 졸리운_곰 2020.03.03 93
894 Programmers > #15 K번째수 [JAVA] 졸리운_곰 2020.02.27 91
893 [Programmers] #14 다리를 지나는 트럭 [JAVA] 졸리운_곰 2020.02.27 60
892 [Programmers] #13 시저암호 [Python] 졸리운_곰 2020.02.27 68
891 [Programmers] #12 완주하지 못한 선수 [Python] 졸리운_곰 2020.02.27 81
890 [Programmers] #11 프린터[JAVA] 졸리운_곰 2020.02.26 71
889 [Programmers] #10 전화번호 목록 [JAVA] 졸리운_곰 2020.02.26 82
888 [Programmers] #9 큰수 만들기[JAVA] 졸리운_곰 2020.02.26 64
887 [Programmers] #8 가운데 글자 가져오기 [Python] 졸리운_곰 2020.02.25 79
886 [Programmers] #7 체육복 [JAVA] 졸리운_곰 2020.02.25 57
885 [Programmers] #6 모의고사[JAVA] 졸리운_곰 2020.02.25 69
884 [알고리즘 문제 풀이]#5 완주하지 못한 선수 [JAVA] 졸리운_곰 2020.02.22 74
883 [알고리즘 문제풀이] #4 탑[JAVA] 졸리운_곰 2020.02.22 68
882 [알고리즘 문제풀이]#3 최댓값과 최솟값 [JAVA] 졸리운_곰 2020.02.22 67
881 [알고리즘 문제풀이] #2 숫자의 표현 [JAVA] 졸리운_곰 2020.02.22 94
880 [알고리즘 문제풀이] #1 K번째수[Python3] 졸리운_곰 2020.02.22 84
879 최고 자바스크립트 머신러닝 라이브러리 리스트 : Top Javascript Machine Learning libraries in 2019 file 졸리운_곰 2020.02.11 240
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED