๋ฌธ์ :
https://www.acmicpc.net/problem/1969
ํ์ด :
๊ฐ์ผ๋ก ์ด๊ฐ ๋น๊ต๋ฅผ ํตํด ๊ฐ์ฅ ๋ง์ด ๋์จ ๋ฌธ์๊ฐ ๊ทธ ์๋ฆฌ ์ธ๋ฑ์ค๋ผ๋ ๊ฒ์ ์์์ง๋ง ๋ฌธ์๊ฐ์ ๊ฑฐ๋ฆฌ์ ์ฐจ๋ฅผ ๋ชจ๋ ๋ํ๋ ๊ฒ์ด ์ด๋ป๊ฒ ํ๋ฉด ์ข์์ง ๋ฐฉ๋ฒ์ด ์๊ฐ๋์ง ์์๋ค.
๊ทธ๋ฌ๋ค
https://gusdnr69.tistory.com/31
์ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํด ๋ฌธ์์ ๋ฌ๋๋ ๊ฐ์ ์ด๋ก ์นด์ดํธ ํ๋ค๋ ์ ์ด ์ ๊ธฐํ๋ค. (์์ง๋ ๋ฐฐ์ธ๊ฒ ๋๋ฌด ๋ง๋ค๋ ๋ง์ด ๋ฐ์ฑ ๋๋ค ..)
์ฐ์ ๋ฌธ์๋ฅผ string ๋ฐฐ์ด์ ํ๋ฒ์ ๋ด๊ณ ,
ํ ์ฐ์ ๋น๊ต๊ฐ ์๋ ์ด ์ฐ์ ๋น๊ต word[j][i]๋ฅผ ํตํด ๊ฐ์ฅ ๋ง์ด ๋ฑ์ฅํ ๋ฌธ์๋ฅผ unordered_map์ผ๋ก ๋ฌธ์, ๋น๋์ ๋ก ์ ์ฅํ๋ค.
๊ทธ๋ฆฌ๋ก ๋ ํ๋ฒ์ for๋ฌธ์ ํตํด max_count์ max_index๋ฅผ ์ ๋ฐ์ดํธ ์์ผ์ค ๋ค ๋น๊ตํ ์ด ๊ฐ์(N)์์ max ๋น๋ฒ๋๋ฅผ ๋นผ์ฃผ์ด
๊ตฌํ๊ณ ์ ํ s์ ๋ฌธ์์ด s1, s2, ~ sN ์ค ๋ค๋ฅธ ๋ฌธ์๋ฅผ ๊ฐ์ง ๋ฌธ์์ ๊ฐ์๋ฅผ ๊ตฌํ๋ค.
c++ ์ฝ๋ :
//
// 1969_DNA.cpp
// SOMA๐ฉ๐ป๐ป
//
// Created by JoSoJeong on 2022/02/16.
//
#include <iostream>
#include <unordered_map>
using namespace std;
int N, cnt;
unordered_map<char, int> map;
int result_sum = 0;
int main(){
cin >> N >> cnt;
string s = "";
string word[N];
for(int i = 0; i < 26; i++){ //initial
map['A' + i] = 0;
}
for(int i =0; i < N; i++){
cin >> word[i];
}
for(int i =0; i < cnt; i++){ // ํ ์ค
for(int j = 0; j < N; j++){
map[word[j][i]]++;
}
int max_count = 0; int max_index = 0;
for(int j = 0; j < 26; j++){
if(map[j+'A'] > max_count) {
max_count = map[j+'A'];
max_index = j;
}
}
result_sum += N - max_count;
s += max_index + 'A';
map.clear();
}
cout << s << '\n';
cout << result_sum << '\n';
return 0;
}
'Algorithm๐ฐ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 13549 ์จ๋ฐ๊ผญ์ง 3 dijkstra (0) | 2022.02.17 |
---|---|
[๋ฐฑ์ค] 1018 ์ฒด์คํ ๋ค์ ์น ํ๊ธฐ brute force (0) | 2022.02.17 |
[๋ฐฑ์ค] 7576 ํ ๋งํ BFS (0) | 2021.12.10 |
[๋ฐฑ์ค] 15681 ํธ๋ฆฌ์ ์ฟผ๋ฆฌ DP + DFS (0) | 2021.09.09 |
[๋ฐฑ์ค] 1463 1๋ก ๋ง๋ค๊ธฐ DP (0) | 2021.08.23 |
๋๊ธ