๐Ÿ”ฅ[99ํด๋Ÿฝ ์ฝ”ํ…Œ ์Šคํ„ฐ๋””] 20์ผ์ฐจ TIL - ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ

HOONSSACยท2024๋…„ 8์›” 10์ผ
1

99Club Coding Test Study

๋ชฉ๋ก ๋ณด๊ธฐ
20/41
post-thumbnail

โณ๋ฌธ์ œ

์–ด๋–ค ์ˆซ์ž์—์„œ k๊ฐœ์˜ ์ˆ˜๋ฅผ ์ œ๊ฑฐํ–ˆ์„ ๋•Œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋ฅผ ๊ตฌํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ˆซ์ž 1924์—์„œ ์ˆ˜ ๋‘ ๊ฐœ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด [19, 12, 14, 92, 94, 24] ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋Š” 94 ์ž…๋‹ˆ๋‹ค.

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

์ œํ•œ ์กฐ๊ฑด

number๋Š” 2์ž๋ฆฌ ์ด์ƒ, 1,000,000์ž๋ฆฌ ์ดํ•˜์ธ ์ˆซ์ž์ž…๋‹ˆ๋‹ค.
k๋Š” 1 ์ด์ƒ number์˜ ์ž๋ฆฟ์ˆ˜ ๋ฏธ๋งŒ์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

numberkreturn
"1924"2"94"
"1231234"3"3234"
"4177252841"4"775841"

โœ๏ธํ’€์ด

๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ์—๋Š” ์–ด๋ ค์›€์ด ์—†์—ˆ์ง€๋งŒ, ๋ง‰์ƒ ๊ตฌํ˜„์„ ํ•˜๋ ค๋‹ˆ ์‰ฝ์ง€ ์•Š์•˜๋‹ค.

์ฒซ ๋ฒˆ์งธ ์‹œ๋„

์ฒ˜์Œ์—๋Š” ๋ฌธ์ œ์—์„œ ์›ํ•˜๋Š” ์กฐ๊ฑด๋Œ€๋กœ ์ ‘๊ทผ์„ ํ•˜์˜€๋‹ค.
๋ฌธ์ž์—ด์„ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜์‹œ์ผœ ์›์†Œ๋“ค์„ ์ˆœํ™˜ํ•˜๋ฉด์„œ,
ํŠน์ • ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•˜์˜€์„ ๋•Œ, ์ตœ๋Œ€๊ฐ’์„ ์ด๋ฃจ๋Š” ๋ถ€๋ถ„์˜ ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•ด๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„์„ ํ•ด๋ณด์•˜๋‹ค.

class Solution {
    public String solution(String number, int k) {
        StringBuilder str = new StringBuilder(number);
        int temp = 0;
        int max = 0;

        for (int i = 0; i < k; i++) {
            for (int j = 0; j < str.length(); j++) {
                char temp1 = str.charAt(j);
                temp = Integer.parseInt(str.deleteCharAt(j).toString());
                
                if (temp > max) {
                    max = temp;
                }
                str.insert(j, temp1);
            }
            str.delete(0, str.length());
            str.append(max);
            

            max = 0;
        }

        
        return str.toString();
    }
}

๊ทธ๋Ÿฌ๋‚˜ ๊ฑฐ์˜ ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์—์„œ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค.

์ด์ค‘ for๋ฌธ์„ ๋Œ๋ฉด์„œ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋ถ€๋ถ„๊นŒ์ง€ ํƒ์ƒ‰ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ์‹œ๋„

๊ทธ๋ž˜์„œ ๋‹ค๋ฅธ ๊ทœ์น™์„ ์ฐพ์•„๋ณด์•˜๋‹ค.

ํฐ ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ํฐ ์ˆ˜๊ฐ€ ๋งจ ์•ž์ž๋ฆฌ์— ์™€์•ผ ํ•œ๋‹ค.
ํ•˜์ง€๋งŒ, ์ž…๋ ฅ ๊ฐ’์ด ์˜ˆ๋ฅผ ๋“ค์–ด "4177252841"๊ณผ 4๋ผ๋ฉด, 8์ด ๋งจ ์•ž์— ์˜ฌ ์ˆ˜๋Š” ์—†๋‹ค. ์™œ๋‚˜ํ•˜๋ฉด, ๋ฌธ์ž์—ด์˜ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ์–ด์„œ๋Š” ์•ˆ๋˜๊ณ , 8์•„๋ž˜์—๋Š” 2์ž๋ฆฌ ๋ฟ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ด์˜ ํŠน์„ฑ์„ ํ™œ์šฉํ•ด ๋งจ ์•ž์—์„œ k๋ฒˆ์งธ๊นŒ์ง€์˜ ์ˆซ์ž ์ค‘์—์„œ ์ตœ์†Œ๊ฐ’์„ ํ•˜๋‚˜์”ฉ ์ง€์›Œ๊ฐ€๋ฉด ๋˜๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.
๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด, ์ˆœ์„œ์™€ ์ž๋ฆฟ์ˆ˜๋ฅผ ์ง€ํ‚ค๋ฉด์„œ ์•ž์ž๋ฆฌ๊ฐ€ ์ œ์ผ ์ปค์งˆ ์ˆ˜ ์žˆ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

class Solution {
    public String solution(String number, int k) {
        StringBuilder str = new StringBuilder(number);

        for (int i = 0; i < k; i++) {
            int minIndex = 0;
            char min = str.charAt(0);
            for (int j = 0; j < k; j++) {
                char temp = str.charAt(j);
                if (temp < min) {
                    minIndex = j;
                    min = temp;
                }
            }
            str.deleteCharAt(minIndex);
        }

        
        return str.toString();
    }
}

๊ฒฐ๊ณผ๋Š” ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ์—์„œ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ์‹คํŒจํ•˜์˜€๋‹ค.

์ด๋Š” ๋กœ์ง์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์—ˆ๋‹ค. ํ˜„์žฌ ์ฝ”๋“œ์—์„œ๋Š” k๋ฒˆ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ๋งค๋ฒˆ ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž๋ฅผ ์ฐพ๊ณ  ์‚ญ์ œํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๊ทธ๋Ÿฌ๋‚˜ ๋ฌธ์ œ์˜ ์š”๊ตฌ์‚ฌํ•ญ์€ ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ํ˜„์žฌ ์ˆซ์ž์™€ ๋‹ค์Œ ์ˆซ์ž๋ฅผ ๋น„๊ตํ•˜์—ฌ ๋” ํฐ ์ˆซ์ž๋ฅผ ๋‚จ๊ธฐ๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, ์‚ญ์ œํ•  ์ˆซ์ž๋ฅผ ์„ ํƒํ•  ๋•Œ, ๋‹ค์Œ ์ˆซ์ž์™€ ๋น„๊ตํ•˜์—ฌ ๋” ํฐ ์ˆซ์ž๋ฅผ ๋‚จ๊ธฐ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค.

๊ทธ๋ž˜์„œ ์ฝ”๋“œ๋ฅผ ์‹น ์—Ž๊ณ , ํ•ด๋‹น ๋ฐฉ์‹์œผ๋กœ ๋‹ค์‹œ ์ ‘๊ทผ์„ ํ•ด ๋ณด์•˜๋‹ค.

๋งˆ์ง€๋ง‰ ์‹œ๋„

๋งค๋ฒˆ ์ตœ๋Œ€๊ฐ’์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ตœ์„ ์˜ ์„ ํƒ์„ ์–ด๋–ป๊ฒŒ ํ•  ์ˆ˜ ์žˆ์„๊นŒ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•ด๋ƒˆ๋‹ค.

์ž…๋ ฅ number์˜ ๊ธธ์ด๊ฐ€ ๋งŒ์•ฝ 10์ด๋ผ๋ฉด,
0๋ฒˆ ๋ถ€ํ„ฐ 3๋ฒˆ ์ธ๋ฑ์Šค๊นŒ์ง€์˜ ์š”์†Œ ์ค‘ ์ตœ๋Œ€๊ฐ’์ด ์ตœ์ข… ๋ฐ˜ํ™˜๊ฐ’์˜ ์ฒซ ๋ฒˆ์งธ ์ž๋ฆฌ๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค.

์™œ๋‚˜ํ•˜๋ฉด, 4๋ฒˆ ๋ถ€ํ„ฐ 9๋ฒˆ ์ธ๋ฑ์Šค๊นŒ์ง€์˜ ์š”์†Œ๋“ค ์ค‘์—์„œ๋Š” ์–ด๋– ํ•œ ๊ฐ’๋„ ์ฒซ ๋ฒˆ์งธ ์ž๋ฆฌ์ˆ˜๊ฐ€ ๋  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, number๊ฐ€ "4177252841"์ด๋ผ๋ฉด
๋’ท์ž๋ฆฌ "252841"์—์„œ๋Š” ์–ด๋–ค ๊ฐ’์„ ๊ณ ๋ฅด๋”๋ผ๋„ ์ž๋ฆฟ์ˆ˜์— ์˜ํ•ด ์ •๋‹ต์˜ ์ฒซ ๋ฒˆ์งธ ๊ฐ’์ด ๋  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ,
์•ž์ž๋ฆฌ "4177"์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’์ด ์ •๋‹ต์˜ ์ฒซ ๋ฒˆ์งธ ์ž๋ฆฌ ์ˆ˜๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค.
๊ทธ๋Ÿฌ๋ฉด ์•ž์˜ "41"์€ ๋‚ ์•„๊ฐ€๊ฒŒ ๋˜๊ณ , 3๋ฒˆ์งธ ์ธ๋ฑ์Šค์˜ 7์„ answer์— ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ ์ฒซ ๋ฒˆ์งธ ์‚ฌ์ดํด์ด ์™„๋ฃŒ๋œ๋‹ค.

๋‘ ๋ฒˆ์งธ ์‚ฌ์ดํด์—์„œ๋Š” "7252841"์—์„œ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜๊ณ ,
๋งˆ์ฐฌ๊ฐ€์ง€๋กœ "725"์ค‘์—์„œ ์ตœ๋Œ€๊ฐ’์„ ์ฐพ์•„ answer์— ์ด์–ด๋ถ™์—ฌ์•ผ ํ•œ๋‹ค.

์ด์ œ, ์ด๋ฅผ ์ฝ”๋“œ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•œ๋ฐ,
์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ธ๋ฑ์Šค๋ฅผ ์ž˜ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์„ ์ง€ ๊ณ ๋ฏผ์ด ๋งŽ์•˜๋‹ค.

๐Ÿ‘พ์ตœ์ข… ์ฝ”๋“œ

class Solution {
    public String solution(String number, int k) {
        StringBuilder answer = new StringBuilder();
        int startIdx = 0;
        int answerLength = number.length() - k;
        int count = 0;
        
        for (int i = 0; i < answerLength; i++) {
            int max = 0;
            for (int j = startIdx; j <= i + k; j++) {
                if (number.charAt(j) - '0' > max) {
                    max = number.charAt(j) - '0';
                    startIdx = j + 1;
                }
            }
            answer.append(Integer.toString(max));
            count++;

        }

        return answer.toString();
    }
}

๊ทธ๋ž˜์„œ ๊ตฌํ•ด์•ผ ํ•˜๋Š” answer์˜ ๊ธธ์ด๋งŒํผ ๋ฐ˜๋ณต์„ ๋Œ๋ฉด์„œ ํƒ์ƒ‰์„ ์‹œ์ž‘ํ•ด ๋‚˜๊ฐˆ number์˜ ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ startIdx๋กœ ํ•˜๋‚˜ ์„ ์–ธํ•ด ์ฃผ์—ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ , startIdx๋ถ€ํ„ฐ i + k๊นŒ์ง€ ์ฆ‰, ์ตœ๋Œ€๊ฐ’์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†๋Š” ๋ฐฐ์—ด์˜ ๋’ท๋ถ€๋ถ„ ๋ฐ”๋กœ ์•ž๊นŒ์ง€์˜ ๋ฒ”์œ„ ์ค‘์—์„œ ์ตœ๋Œ€๊ฐ’์„ ์ฐพ๊ณ  answer์— ํ•˜๋‚˜์”ฉ appendํ•ด์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„์„ ํ•˜๋‹ˆ ๋งˆ์นจ๋‚ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.


๐Ÿ”—๋ฌธ์ œ ๋งํฌ
๐Ÿ’ปRepository

profile
ํ›ˆ์‹น์˜ ๊ฐœ๋ฐœ์—ฌํ–‰

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