๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค(Programmers)

[c++] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ(Level 2)

by ์•ˆ์ฃผํ˜• 2022. 4. 24.

๋ฌธ์ œ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ

 

programmers.co.kr

 

์ฝ”๋“œ

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

string solution(string number, int k) {
    string answer = "";
    
    int index = 0;
    for(int i=0; i<number.length()-k; i++){
        int max_val = 0;
        for(int j=index; j<=k+i; j++){
            if(number[j]=='9'){ // 10๋ฒˆ ํ…Œ์ผ€๊ฐ€ ์ƒ๋‹นํžˆ ๋นจ๋ผ์ง„๋‹ค.
                max_val = number[j]-'0';
                index = j+1;
                break;
            }
            if(number[j]-'0'>max_val){
                max_val = number[j]-'0';
                index = j+1;
            }
        }
        answer+=to_string(max_val);
    }
    return answer;
}

 

ํ’€์ด

๋ฌธ์ œ ์ดํ•ด๋Š” ์‰ฌ์› ๋Š”๋ฐ ์ €๋Š” ์ƒ๋‹นํžˆ ์˜ค๋ž˜ ๊ฑธ๋ ธ๋˜ ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. k๊ฐœ์˜ ์ˆ˜๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค๋Š” ๋ง์€ ๊ฒฐ๊ตญ (์–ด๋–ค ์ˆ˜ - k๊ฐœ์˜ ์ˆ˜) ์ž๋ฆฌ๋ฅผ ๊ฐ€์ง„ ์ˆซ์ž๋ฅผ ๋งŒ๋“ค์–ด ๋‚ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

  • ๋”ฐ๋ผ์„œ ์ฒ˜์Œ for๋ฌธ์€ number.length() - k ๋งŒํผ ๋Œ์•„์ค๋‹ˆ๋‹ค.
  • ๋‘ ๋ฒˆ์งธ for๋ฌธ์˜ ์กฐ๊ฑด์ด ์ƒ๋‹นํžˆ ์–ด๋ ค์šด๋ฐ int j= index; j<=k+i; j++๋ผ๊ณ  ์ฃผ๊ฒŒ ๋˜๋ฉด ์ ค ์ฒ˜์Œ์— 0 <k ๋งŒํผ ๋Œ๊ฒŒ ๋˜๊ณ  ์ด๊ฒƒ์€ ๊ณง ์–ด๋–ป๊ฒŒ๋“  (number.length() - k) ์ž๋ฆฟ์ˆ˜์˜ ์ˆ˜๋ฅผ ๋งŒ๋“ ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • if(number[j]=='9') ๋ฌธ์žฅ์€ ์—†์ด ๋Œ๋ ค๋„ ํ†ต๊ณผ๊ฐ€ ๋˜์ง€๋งŒ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค 10๋ฒˆ์˜ ๊ฒฝ์šฐ์—์„œ ์••๋„์ ์œผ๋กœ ๋Š๋ ค์ง‘๋‹ˆ๋‹ค.

๋Œ“๊ธ€