ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Algo Rhythm๐Ÿ•บ๐Ÿ’ƒ] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๊ณ ๋“์  Kit ๊ฐ€์žฅ ํฐ ์ˆ˜
    Algo Rhythm๐Ÿ•บ๐Ÿ’ƒ/Programmers 2020. 6. 29. 16:21

    ๋ฌธ์ œ ์„ค๋ช…

     

    0 ๋˜๋Š” ์–‘์˜ ์ •์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ •์ˆ˜๋ฅผ ์ด์–ด ๋ถ™์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ์•Œ์•„๋‚ด ์ฃผ์„ธ์š”.

    ์˜ˆ๋ฅผ ๋“ค์–ด, ์ฃผ์–ด์ง„ ์ •์ˆ˜๊ฐ€ [6, 10, 2]๋ผ๋ฉด [6102, 6210, 1062, 1026, 2610, 2106]๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ์ด์ค‘ ๊ฐ€์žฅ ํฐ ์ˆ˜๋Š” 6210์ž…๋‹ˆ๋‹ค.

    0 ๋˜๋Š” ์–‘์˜ ์ •์ˆ˜๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด numbers๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ˆœ์„œ๋ฅผ ์žฌ๋ฐฐ์น˜ํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ์–ด return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

     

    ์ œํ•œ ์‚ฌํ•ญ

    • numbers์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 100,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.

    • numbers์˜ ์›์†Œ๋Š” 0 ์ด์ƒ 1,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.

    • ์ •๋‹ต์ด ๋„ˆ๋ฌด ํด ์ˆ˜ ์žˆ์œผ๋‹ˆ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ์–ด return ํ•ฉ๋‹ˆ๋‹ค.

    ๋‚˜๋Š” ์–ด๋–ป๊ฒŒ ํ’€์—ˆ๋‚˜

     

    import java.util.Arrays;
    
    class Solution {
        public String solution(int[] numbers) {
            String answer = "";
            
            //initialize
            Integer[] numArr = new Integer[numbers.length];
            for(int i = 0; i < numbers.length; i++) {
                numArr[i] = numbers[i];
            }
            
            // sort
            Arrays.sort(numArr, (o1, o2) -> {
                String t1 = o1.toString();
                String t2 = o2.toString();
                
                return (t2 + t1).compareTo(t1 + t2);
            });
            
            //concatenating
            for(int i = 0; i < numArr.length; i++) {
                answer += numArr[i];
            }
            
            //exception
            if(answer.startsWith("0")) return "0";
            
            return answer;
        }
    }

     

    ๋‚˜๋Š” ์™œ ์ €๋ ‡๊ฒŒ ํ’€์—ˆ๋‚˜

     

    ๋ฌธ์ œ ์„ค๋ช…์— ๋‚˜์˜จ ์˜ˆ์ œ๋ฅผ ์œ ์‹ฌํžˆ ์‚ดํŽด๋ณธ ๊ฒฐ๊ณผ ์ˆซ์ž๋“ค์ด ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋ฉด ๋˜๋Š” ์ค„ ์•Œ์•˜๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๊ฒฝ์šฐ input์ด [3, 30, 34, 5, 9]์ผ ๊ฒฝ์šฐ output์ด 9534330๊ฐ€ ์•„๋‹ˆ๋ผ 9543330๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค.

     

    ์›์ธ์„ ๋ถ„์„ํ•ด๋ณด๋‹ˆ ๋‚ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ฃผ์–ด์ง„ ์ •์ˆ˜๋ฅผ ๊ทธ ์ž์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ์ž๋ฆฌ์ˆ˜๋กœ ๋‚˜๋ˆ ์„œ ๋‹ค๋ฃฌ๋‹ค๋Š” ๊ฒƒ์„ ๊บ ๋‹ฌ์•˜๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ์ •์ˆ˜ 43์ด ์ฃผ์–ด์ง€๋ฉด ๋‚ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ 43์œผ๋กœ ์ทจ๊ธ‰ํ•˜์ง€ ์•Š๊ณ  4์™€ 3์œผ๋กœ ์ทจ๊ธ‰ํ–ˆ๋˜ ๊ฒƒ์ด๋‹ค. ์ฃผ์–ด์ง„ ์ •์ˆ˜๋ฅผ ๊ทธ ์ž์ฒด๋กœ ์ทจ๊ธ‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ฌด์–ธ๊ฐ€๊ฐ€ ํ•„์š”ํ–ˆ๋‹ค.

     

    ์ฃผ์–ด์ง„ ์ •์ˆ˜๋ฅผ ๊ทธ ์ž์ฒด๋กœ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ฃผ์–ด์ง„ ์ •์ˆ˜๋ฅผ ๋”ฐ๋กœ ๋‹ด๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ArrayList๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ArrayList๋Š” ์ฃผ์–ด์ง„ ์ •์ˆ˜๋ฅผ ๋”ฐ๋กœ ๋‹ด์„ ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ •๋ ฌ๋„ ๊ฐ€๋Šฅํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

     

    import java.util.ArrayList;
    import java.util.Comparator;
    
    class Solution {
        public String solution(int[] numbers) {
            String answer = "";
            ArrayList<String> numList = new ArrayList<>();
            
            for(int num : numbers) { 
                numList.add(Integer.toString(num));
            }
            
            numList.sort(Comparator.reverseOrder());
            
            for(String num : numList) {
                answer += num;
            }
    
            return answer;
        }
    }

     

    ๊ทธ๋ž˜์„œ ์œ„์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ ๋’ค ์‹คํ–‰ํ–ˆ๋‹ค. ์ƒ๊ฐํ–ˆ๋˜๋Œ€๋กœ ์ •์ˆ˜ ๊ทธ ์ž์ฒด๋Š” ๋ณด์กด๋˜์—ˆ๋‹ค. ํ•˜์ง€๋งŒ input [3, 30, 34, 5, 9]์— ๋Œ€ํ•˜์—ฌ 9534330๊ฐ€ ์•„๋‹ˆ๋ผ 9534303์„ returnํ–ˆ๋‹ค.

     

    ๋ฌธ์ œ ์›์ธ์„ ๋ถ„์„ํ•˜๋‹ค๊ฐ€ 'ํ˜น์‹œ ์•ž ์ž๋ฆฌ ์ˆ˜๊ฐ€ ๊ฐ™๋‹ค๋ฉด ์ž๋ฆฟ์ˆ˜๊ฐ€ ์ž‘์„์ˆ˜๋ก ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋†’์—ฌ์•ผ ํ•˜๋Š”๊ฑด๊ฐ€?'๋ผ๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค. ์ฆ‰, [30, 3]์ด input์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค๋ฉด 3์ด 30๋ณด๋‹ค ์ž๋ฆฟ์ˆ˜๊ฐ€ ์ž‘๊ธฐ ๋•Œ๋ฌธ์— ์•ž์œผ๋กœ ์™€์„œ 303์ด ์•„๋‹ˆ๋ผ 330์„ returnํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ด๋‚ด ์ƒ๊ฐํ•ด๋ณด๋‹ˆ [34, 3, 30]์ด input์œผ๋กœ ์ฃผ์–ด์งˆ ๊ฒฝ์šฐ 34330์„ returnํ•ด์•ผ ํ•˜๋Š”๋ฐ ์ € ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋ฉด 33430์„ returnํ•ด์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์˜ณ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

     

    ๋„์ €ํžˆ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ฒ ์–ด์„œ ์•„๋ž˜ ๋งํฌ์—์„œ ๋‹ค๋ฅธ ๋ถ„์˜ ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ํ–ˆ๋‹ค. ์ด ๋ถ„์— ๋”ฐ๋ฅด๋ฉด String ์ƒํƒœ์—์„œ A+B์™€ B+A๋ฅผ ๋น„๊ตํ•ด์„œ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ ๋‚˜์„œ ๋งˆ์ง€๋ง‰์ด 000..์ธ ์˜ˆ์™ธ ๊ฒฝ์šฐ๋งŒ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋œ๋‹ค๊ณ  ํ•˜์…จ๋‹ค.

    https://programmers.co.kr/learn/questions/9355

     

    ๋‚˜๋Š” ๋ฌด์—‡์„ ๋ฐฐ์› ๋‚˜

     

    ๋‚ด๊ฐ€ Comparator ์‚ฌ์šฉ๋ฒ•์— ์ต์ˆ™ํ•˜์ง€ ๋ชป ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์•„๋ž˜ ๋ธ”๋กœ๊ทธ๋ฅผ ํ†ตํ•ด ๊ณต๋ถ€ํ–ˆ๋‹ค.

    https://gmlwjd9405.github.io/2018/09/06/java-comparable-and-comparator.html

    https://www.daleseo.com/java-comparable-comparator/

    ๋Œ“๊ธ€

Designed by Tistory.