5

[프로그래머스] 신고 결과 받기 with C++

문제 설명 제한 사항 및 입출력 예제 개념 id_list에 포함된 사용자가 신고 결과 이메일을 얼마나 많이 받았는지 파악하는 문제다. 각 신고 처리 내역은 "신고자 신고할 사람"의 형식으로 제시된다. 단, 본 문제에서 핵심적인 고려 사항은 동일한 사용자에 대한 중복 신고가 단 한 번의 신고로만 처리된다는 점이다. 따라서, 동일한 대상에 대한 다수의 신고가 있더라도 이를 단일 신고로 간주하며, 이는 신고 결과 이메일의 수를 결정하는 데 중요한 요소가 된다는 점을 놓치면 안 된다. 따라서 map 자료구조를 활용하여 "신고자" "신고한 사람"의 형태의 쌍을 받아 처리할 수 있다. 각 신고자를 키로 설정하고, 신고한 사람을 값으로 설정한다. 동일한 신고자가 동일한 신고한 사람을 여러 번 신고하더라도, map 구..

[알고리즘] 분할 정복 - 맵리듀스

맵리듀스개요 지금까지 우리가 다룬 분할 정복은 주로 알고리즘 설계 패러다임으로 간주했다. 이번엔 이 방식을 일반 컴퓨팅 환경을 초월한 고성능 컴퓨터에 적용하는 방법에 대해 논의하려고 한다. 이러한 확장의 핵심에는 컴퓨터 클러스터(Cluster)라는 개념이 있다. 컴퓨팅 클러스터, 즉 복수의 컴퓨터를 네트워크로 연결하여 단일 시스템처럼 작동하게 하는 방식으로, 이를 통해 더 복잡하고 규모가 큰 문제를 효과적으로 해결할 수 있다.  하지만, 단순히 컴퓨팅 리소스를 확장하는 것만으로 대규모 데이터 처리에 필요한 세밀함과 효율성을 보장하긴 어렵다. 이러한 관점에서 맵리듀스(MapReduce)는 대용량 데이터를 효과적으로 처리할 수 있는 프로그래밍 모델이다. 맵리듀스는 컴퓨팅 클러스터를 활용해 거대한 양의 데이터..

CS/알고리즘 2023.05.20

[백준] 20920 영단어 암기는 괴로워 with C++

문제설명 입출력 예제 개념 주어진 문자열을 빈도수 → 길이순 → 알파벳 순으로 정렬하는 문제다. 자료구조 맵을 이용해 특정 길이 이상의 문자열을 빈도수와 함께 컨테이너에 저장한 후, 주어진 조건에 맞게 정렬하면 문제를 해결할 수 있다. 풀이 #include #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N, M; string str; map m; cin >> N >> M; 영단어의 개수 N, 외울 단어의 길이 기준 M, 영단어 문자열 str, 단어를 저장할 컨테이너 m을 초기화한다. while (N--) { cin >> str; if (str.size(..

Algorithm/백준 2023.05.05

[백준] 2108 통계학 with C++

문제설명 입출력 예제 개념 다양한 수를 처리하는 문제다. 산술 평균, 중앙값, 범위는 간단하게 해결할 수 있지만, 최빈값을 처리하는 과정이 까다롭고, 시간 초과에 자주 걸리므로 알고리즘 최적화를 잘해야 한다. 풀이 #include #include #include #include #include using namespace std; int main() { int N, sum = 0; cin >> N; vector v(N); unordered_map freq; 수의 개수 N, 산술 평균을 계산하기 위한 sum, 중앙값과 범위를 계산하기 위한 벡터 v, 최빈값을 계산하기 위한 해시맵 freq를 초기화한다. for (int i = 0; i > v[i]; sum += v[i]; fr..

Algorithm/백준 2023.05.04

[백준] 26069 붙임성 좋은 총총이 with C++

문제설명 입출력 예제 개념 ChongChong과 만난 사람은 무지개 댄스를 추게 되므로, key로 아이디를 갖고 value로 무지개 댄스 여부를 확인할 수 있는 map 자료구조를 사용하면 쉽게 풀 수 있다. 즉, 문자열을 검사해 총총이를 만났으면 value값을 true로 바꾸면 된다. 풀이 #include #include using namespace std; int main() { int N, count = 0; cin >> N; map m; string str1, str2; 사람들이 만난 기록의 수 N, 무지개 댄스를 추는 사람의 수 count, 이러한 정보를 기록할 맵 자료구조 m, 사람들의 이름을 초기화할 문자열 str1, str2을 초기화한다. while (N--) { cin >> str1 >> ..

Algorithm/백준 2023.05.03