문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/17677
코딩테스트 연습 - [1차] 뉴스 클러스터링
뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브
programmers.co.kr
해시를 이용하여 문제에서 주어진대로 풀면 되는 문제였습니다.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <string> | |
#include <algorithm> | |
#include <map> | |
#include <set> | |
#include <iostream> | |
using namespace std; | |
const int MULTIPLE = 65536; | |
bool isAlphabet(char c) | |
{ | |
return (c >= 'A' && c <= 'Z') | |
|| (c >= 'a' && c <= 'z'); | |
} | |
string convertToLowercase(string s) | |
{ | |
string result; | |
for (char c : s) | |
{ | |
result += c >= 'A' && c <= 'Z' ? c - 'A' + 'a' : c; | |
} | |
return result; | |
} | |
int solution(string str1, string str2) { | |
map<string, int> visited, visited2; | |
set<string> keys; | |
for (int i = 0; i < str1.length() - 1; i++) | |
{ | |
if (!(isAlphabet(str1[i]) && isAlphabet(str1[i + 1]))) | |
{ | |
continue; | |
} | |
string temp = convertToLowercase(str1.substr(i, 2)); | |
visited[temp]++; | |
keys.insert(temp); | |
} | |
for (int i = 0; i < str2.length() - 1; i++) | |
{ | |
if (!(isAlphabet(str2[i]) && isAlphabet(str2[i + 1]))) | |
{ | |
continue; | |
} | |
string temp = convertToLowercase(str2.substr(i, 2)); | |
visited2[temp]++; | |
keys.insert(temp); | |
} | |
double numerator = 0, denominator = 0; | |
for (auto key : keys) | |
{ | |
numerator += min(visited[key], visited2[key]); | |
denominator += max(visited[key], visited2[key]); | |
} | |
if (!numerator && !denominator) | |
{ | |
return MULTIPLE; | |
} | |
double result = numerator / denominator * MULTIPLE; | |
return int(result); | |
} |

개발환경: Programmers IDE
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
반응형
'알고리즘 > programmers' 카테고리의 다른 글
[Programmers] 수식 최대화 (0) | 2022.02.02 |
---|---|
[Programmers] 거리두기 확인하기 (0) | 2022.01.31 |
[Programmers] 괄호 변환 (0) | 2022.01.29 |
[Programmers] 오픈채팅방 (0) | 2022.01.26 |
[Programmers] 카카오프렌즈 컬러링북 (0) | 2022.01.26 |