https://programmers.co.kr/learn/courses/30/lessons/17677
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<string> make_list(string str) {
vector<string> list;
if (str[0] >= 'a' && str[0] <= 'z') {
str[0] -= 32;
}
for (int i = 0; i < str.size() - 1; i++) {
if (str[i + 1] >= 'a' && str[i + 1] <= 'z') {
str[i + 1] -= 32;
}
if (isalpha(str[i]) != 0 && isalpha(str[i + 1]) != 0) {
list.push_back(str.substr(i,2));
}
}
return list;
}
int solution(string str1, string str2) {
int answer = 0;
int f, s, count;
f = s = count = 0;
vector<string> str_first = make_list(str1);
vector<string> str_second = make_list(str2);
int mother = 0;
sort(str_first.begin(), str_first.end());
sort(str_second.begin(), str_second.end());
while (f < str_first.size() && s < str_second.size()) {
if (str_first[f].compare(str_second[s]) == 0) {
mother++;
count++;
f++;
s++;
}
else if (str_first[f].compare(str_second[s]) > 0) {
mother++;
s++;
}
else {
mother++;
f++;
}
}
while (f < str_first.size()) {
mother++;
f++;
}
while (s < str_second.size()) {
mother++;
s++;
}
if (mother == 0 && count == 0) return 65536;
return (count/(float)mother)*65536;
}
'전공공부 > 코딩테스트' 카테고리의 다른 글
(c++) 프로그래머스 "약수의 개수와 덧셈" (0) | 2022.03.14 |
---|---|
(c++) 프로그래머스 "거리두기 확인" (0) | 2022.03.14 |
(c++) 프로그래머스 실패율 (0) | 2022.03.08 |
(c++) 프로그래머스 괄호 변환 (0) | 2022.03.07 |
(c++) 프로그래머스 메뉴 리뉴얼 (0) | 2022.03.07 |