[Algorithm] ๐Ÿ”ถํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ

HaJingJingยท2021๋…„ 5์›” 7์ผ
0

Algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
33/119

0. ๋ฌธ์ œ

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

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

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

์ œํ•œ์กฐ๊ฑด

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

์ž…๋ ฅ
number = "1924" k = 2
number = "1231234" k = 3
number = "4177252841" k = 4

์ถœ๋ ฅ
"94"
"3234"
"775841"


1. ์•„์ด๋””์–ด

1) n๋ฒˆ์งธ ์ˆซ์ž๊ฐ€ ๋‚˜์˜ค๋Š” ๋ฒ”์œ„๋ฅผ ๊ตฌํ•จ
2) ๋ฒ”์œ„ ๋‚ด์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’๊ณผ max_idx+1์„ ํ•œ idx๋ฅผ ๊ตฌํ•จ
3) ๊ฐ€์žฅ ํฐ ๊ฐ’์„ string์— ์ถ”๊ฐ€ํ•จ

2. ํ•ต์‹ฌ ํ’€์ด

1) ๋ฒ”์œ„ ๋‚ด์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’๊ณผ max_idx+1์„ ํ•œ idx๋ฅผ ๊ตฌํ•จ

if (number.charAt(j) > max) {
		max = number.charAt(j);
		idx = j + 1;
}

2) ๊ฐ€์žฅ ํฐ ๊ฐ’์„ string์— ์ถ”๊ฐ€ํ•จ

answer.append(max);

3. ์ฝ”๋“œ

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

4. ๊ฒฐ๊ณผ

์„ฑ๊ณต~

profile
๐ŸŒฑ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๐ŸŒฑ

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