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

[c++] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - [1์ฐจ] ๋‰ด์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ง ( Level 2, 2018 KAKAO BLIND RECRUITMENT )

by ์•ˆ์ฃผํ˜• 2021. 10. 19.
 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - [1์ฐจ] ๋‰ด์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ง

๋‰ด์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ง ์—ฌ๋Ÿฌ ์–ธ๋ก ์‚ฌ์—์„œ ์Ÿ์•„์ง€๋Š” ๋‰ด์Šค, ํŠนํžˆ ์†๋ณด์„ฑ ๋‰ด์Šค๋ฅผ ๋ณด๋ฉด ๋น„์Šท๋น„์Šทํ•œ ์ œ๋ชฉ์˜ ๊ธฐ์‚ฌ๊ฐ€ ๋งŽ์•„ ์ •์ž‘ ํ•„์š”ํ•œ ๊ธฐ์‚ฌ๋ฅผ ์ฐพ๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค. Daum ๋‰ด์Šค์˜ ๊ฐœ๋ฐœ ์—…๋ฌด๋ฅผ ๋งก๊ฒŒ ๋œ ์‹ ์ž…์‚ฌ์› ํŠœ๋ธŒ

programmers.co.kr

 

#include <algorithm>
#include <string>
#include <map>
#include <iostream>

using namespace std;

int solution(string str1, string str2) {
    int answer = 0;
    int sum=0,cnt=0;

    map<string,int>A,B,m;

    for(int i=0; i<str1.length(); i++){   //๋Œ€๋ฌธ์ž->์†Œ๋ฌธ์ž ๋ณ€๊ฒฝ
        str1[i]=tolower(str1[i]);
    }
    for(int i=0; i<str2.length(); i++){   //๋Œ€๋ฌธ์ž->์†Œ๋ฌธ์ž ๋ณ€๊ฒฝ
        str2[i]=tolower(str2[i]);
    }
    for(int i=0; i<str1.length()-1; i++){
        if(str1[i]>='a'&&str1[i]<='z'&&str1[i+1]>='a'&&str1[i+1]<='z'){ //์ˆซ์ž์ผ๋•Œ
            string temp=str1.substr(i,2);
            A[temp]++;
            m[temp]++;
        }
    }
    for(int i=0; i<str2.length()-1; i++){
        if(str2[i]>='a'&&str2[i]<='z'&&str2[i+1]>='a'&&str2[i+1]<='z'){ //์ˆซ์ž์ผ๋•Œ
            string temp=str2.substr(i,2);
            B[temp]++;
            m[temp]++;
        }
    }

    for(auto it=m.begin(); it!=m.end(); it++){
        cnt+=min(A[it->first],B[it->first]);
        sum+=max(A[it->first],B[it->first]);
    }
    if(sum==0&&cnt==0) sum=1,cnt=1;
    answer=(double)cnt/(double)sum*65536;
    return answer;
}

๋Œ“๊ธ€