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

[c++] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๋ฌธ์ž์—ด ์••์ถ•( Level 2, 2020 ์นด์นด์˜ค ๋ธ”๋ผ์ธ๋“œ)

by dkswnkk 2021. 10. 21.

๋ฌธ์ œ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋ฌธ์ž์—ด ์••์ถ•

๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์ „๋ฌธ๊ฐ€๊ฐ€ ๋˜๊ณ  ์‹ถ์€ "์–ดํ”ผ์น˜"๋Š” ๋ฌธ์ž์—ด์„ ์••์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ์— ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ๋น„์†์‹ค ์••์ถ• ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๋ฌธ

programmers.co.kr

 

์ฝ”๋“œ

#include <string>
#include <vector>

using namespace std;

int solution(string s) {
    int answer = 9999;

    if(s.length()==1) answer=1;
    else{
        for(int i=1; i<s.length(); i++){
            int cnt=1,temp_ans=0;
            string before,temp;
            before=s.substr(0,i);
            for(int k=i; k<s.length(); k+=i ){
                temp=s.substr(k,i);
                if(temp==before) cnt++;
                else{
                    if(cnt>1){
                        string plus=to_string(cnt);
                        temp_ans+=plus.length()+before.length();
                    }
                    else if(cnt==1) temp_ans+=before.length();
                    cnt=1;
                    before=temp;
                }
            }
            if(cnt>1){
                string plus=to_string(cnt);
                temp_ans+=plus.length()+before.length();
            }
            else temp_ans+=before.length();
            answer=min(answer,temp_ans);
        }

    }

    return answer;
}

๋Œ“๊ธ€