๐Ÿ“Œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„ :: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค :: ์ •๋ ฌ - ๊ฐ€์žฅ ํฐ ์ˆ˜ ๐Ÿ‘€

Dev-Oยท2021๋…„ 11์›” 23์ผ
0

CodingTest

๋ชฉ๋ก ๋ณด๊ธฐ
1/18
post-thumbnail

โ˜๐Ÿป lv.2 ๊ฐ€์žฅ ํฐ ์ˆ˜

๋ฌธ์ œ ์„ค๋ช…

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

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

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

์ œํ•œ ์‚ฌํ•ญ

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

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

์ž…์ถœ๋ ฅ ์˜ˆ

[6, 10, 2] "6210"
[3, 30, 34, 5, 9] "9534330"


๋ฌธ์ œ ํ•ด์„

์ฒ˜์Œ์—๋Š” ์ž๋ฆฟ ์ˆ˜ ๋น„๊ต๋ฅผ ํ†ตํ•ด์„œ ํฐ ์ˆ˜๋ฅผ ๋น„๊ตํ•˜๋ ค๊ณ  ํ–ˆ์œผ๋‚˜, ๋„ˆ๋ฌด ๋งŽ์€ ๋ฐ˜๋ณต๋ฌธ๊ณผ ์กฐ๊ฑด๋ฌธ์„ ์ž‘์„ฑํ•ด์•ผ ํ–ˆ์œผ๋ฏ€๋กœ ๊ทธ ๋ฐฉ๋ฒ•์€ ํ๊ธฐ์ฒ˜๋ถ„๋๋‹ค.

๋ฌธ์ œ๋Š” ํฐ์ˆ˜๊ฐ€ ์•ž์œผ๋กœ ์˜ค๋„๋ก ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ์„ ํ•˜๋ฉด ๋˜๋Š”๋ฐ [0, 0, 0]๊ณผ ๊ฐ™์€ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋Š” ์ถœ๋ ฅ์ด "000"์ด๋ฏ€๋กœ ๋งจ ์•ž์— 0์ด ๋‚˜์˜ค๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ๋”๋งŒ ์ฒ˜๋ฆฌ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

๊ทผ๋ฐ ์•ž, ๋’ค ์ˆซ์ž๋ฅผ ๋ถ™์—ฌ๋ณด๊ณ  ๋” ํฐ ์ˆ˜๋ฅผ ์•ž์— ๋†”์•ผ ํ•˜๋Š” ๋กœ์ง์„ ์งœ๋Š”๊ฒŒ ์–ด๋ ค์› ๋‹ค. ์ผ๋‹จ ์ฃผ์–ด์ง„ numbers๋ฐฐ์—ด์„ ๋ฌธ์ž์—ด ๋ฐฐ์—ด๋กœ ๋ฐ”๊ฟจ๋‹ค. ์ดํ›„, comparator๋ฅผ ํ™œ์šฉํ•ด ์ •๋ ฌ๋กœ์ง์„ ๋งŒ๋“ค์–ด์„œ ํ’€์—ˆ๋‹ค.

String a + String b ์™€ String b + String a๋ฅผ ๋น„๊ตํ•ด b + a๊ฐ€ ํฌ๋ฉด a์™€ b์œ„์น˜๋ฅผ ๋ฐ”๊ฟ”์ฃผ๋Š” compareํ•จ์ˆ˜ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์„ ํ•˜๋ฉด ๋œ๋‹ค.

์˜ˆ) 3, 34 ์ด๋ฉด, 334, 343์ด ๋‚˜์˜ค๋Š”๋ฐ 343์ด ๋” ํฌ๋‹ˆ 34์™€ 3์„ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋œ๋‹ค.

์ฝ”๋“œ

import java.util.*;

class Solution {
    public String solution(int[] numbers) {
        String[] str = new String[numbers.length];
    
        for(int i = 0 ; i < numbers.length ; i++){
            str[i] = String.valueOf(numbers[i]);   
        }
        //๋ฌธ์ž์—ด๋กœ ๋ฐ”๊ฟ”์ค€ ๋’ค ํฌ๊ธฐ ๋น„๊ต๋ฅผ ํ•ด์•ผํ•จ.  
        
        
        Arrays.sort(str, new Comparator<String>(){
            @Override
            public int compare(String a, String b){
                return ((b+a).compareTo(a+b));
            }    
        });
        //comparator๋ฅผ ์ต๋ช…ํด๋ž˜์Šค๋กœ ๊ตฌํ˜„
        //compare๋ฉ”์†Œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ compare๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜(object)๋‘ ๊ฐœ(์•ž, ๋’ค)๋ฅผ
       	//๋น„๊ตํ•ด์„œ ์ž‘์œผ๋ฉด ์Œ์˜ ์ •์ˆ˜, ๊ฐ™์œผ๋ฉด 0 ํฌ๋ฉด ์–‘์˜ ์ •์ˆ˜์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
        //๋ฌธ์ž์—ด ํฌ๊ธฐ๋น„๊ต ๋ฉ”์„œ๋“œ compareTo๋ฅผ ํ™œ์šฉํ•ด b+a๊ฐ€ a+b๋ณด๋‹ค ํฌ๋ฉด ์–‘์ˆ˜, ์ž‘์œผ๋ฉด ์Œ์ˆ˜ ๊ฐ™์œผ๋ฉด 0 ๋ฐ˜ํ™˜ํ•œ๋‹ค.
        //๊ฒฐ๊ตญ Arrays.sort(๋ฐฐ์—ด, ์กฐ๊ฑด)์—์„œ ์กฐ๊ฑด(Comparator)์ด ์–‘์˜์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ์˜ค๋ฆ„์ฐจ์ˆœ
        //์Œ์˜ ์ •์ˆ˜๋ฉด ๋‚ด๋ฆผ์ฐจ์ˆœ ๋œ๋‹ค.   
        
        if(str[0].equals("0")){
            return "0";
        }
        
        String answer = "";
        
        for(int k = 0 ; k < numbers.length ; k++){
            answer += str[k];
        }
        return answer;
    }
}
profile
Being Outstanding needs Understanding๐Ÿš€

0๊ฐœ์˜ ๋Œ“๊ธ€