#include <stdio.h>
#include <string>
#include <iostream>
using namespace std;
int main() {
int N, M;
cin >> N;
cin >> M;
string* str = new string[N];
char ch_n;
char ch_o = NULL;
int cnt_n = 0;
int cnt_o = -1; //첫번째 값은 무조건 비교하기 위함.
string sol = "";
int result = 0;
for (int i = 0; i < N; i++) {
cin >> str[i];
}
for (int i = 0; i < M; i++) {
for (int j = 0; j < N; j++) {
ch_n = str[j][i];
if (ch_n == ch_o) continue;
for (int k = 0; k < N; k++) {
if (ch_n == str[k][i] && j!=k) {
cnt_n++;
}
}
/*cout << "ch_n is " << ch_n << endl;
cout << "cnt_n is " << cnt_n << endl;*/
if (cnt_n > cnt_o) {
ch_o = ch_n;
cnt_o = cnt_n;
}
else if (cnt_n == cnt_o) {
if (ch_n < ch_o) {
ch_o = ch_n;
cnt_o = cnt_n;
}
}
ch_n = NULL;
cnt_n = 0;
}
sol += ch_o;
//cout << "cnt_o is " << cnt_o << endl;
result += N - (cnt_o + 1);
//cnt_o는 자신과 같은 값을 누적한 것이므로 줄 수 - (자기 + 같은값)으로 계산하면 자신과 다른 값들의 개수를 알 수 있다.
ch_o = NULL;
cnt_o = -1;
//한 라인 비교 끝.
}
cout << sol << endl;
cout << result;
delete[] str;
}
25분 6초
'코딩테스트 문제풀이' 카테고리의 다른 글
[백준 1026] 보물 (0) | 2019.10.12 |
---|---|
[백준 1439] 문제 풀기 (그리디) (0) | 2019.07.08 |
[백준 5585] 문제 풀기 (그리디) (0) | 2019.07.01 |
[백준 11399] 문제 풀기 (그리디) (0) | 2019.07.01 |
[백준 11047] 문제 풀기(그리디) (0) | 2019.07.01 |