[백준 1969] DNA
[백준 1969] DNA
#include "header.h"
using namespace std;
int N, M;
vector <string> str;
void input() {
cin >> N >> M;
for(int i=0; i<N; i++) {
string s;
cin >> s;
str.push_back(s);
}
}
void solve() {
int distance = 0;
string hamming;
for(int i=0; i<M; i++) {
map <char, int> m;
int cnt = 0;
char c = 'Z';
for(int j=0; j<N; j++) {
m[str[j][i]]++;
if(cnt < m[str[j][i]]) {
cnt = m[str[j][i]];
c = str[j][i];
} else if(cnt == m[str[j][i]]) {
if((int)c > (int)str[j][i]) c = str[j][i];
}
}
distance += (N - cnt);
hamming += c;
}
cout << hamming << endl << distance << endl;
}
int main () {
input();
solve();
return 0;
}
- 브루트포스로 푸는 문제.
- 문제가 좀 헷갈리게 나왔는데, 세로로 탐색하면서 제일 많이 나온 글자가 해밍턴뭐시깽이가 된다.
- 세로를 모두 탐색 하면 제일 많이 나온 글자들로 문자열이 생성되는데,
- (세로로 탐색하면서) 그 글자와 다른 글자의 갯수의 누적합이 답이다.
- 이 때, 다른 글자의 갯수가 같다면 사전순으로 정렬 해야 한다.
- 정렬 하기 위해서 c를 Z로 초기화 시켜두고, 아스키 코드 번호를 비교했다.