[문제해결기법 2주차] Error
Computer Science/알고리즘(백준+프로그래머스)

[문제해결기법 2주차] Error

#include<iostream>
#include<string.h>
#include<vector>
#include<string>
using namespace std;

int main() {
	std::ios::sync_with_stdio(false);

	int test = 0;
	int cnum = 0;//코드개수(알파벳 개수)
	int length = 0;//코드 길이
	vector<string>code;
	int hammingdist[26];
	string result;


	//인코딩된 비트열
	int incodenum = 0;
	char bits[1025];


	cin >> test;

	for (int i = 0; i < test; i++) {
		code.clear();
		memset(hammingdist, 0, sizeof(hammingdist));
		memset(bits, 0, sizeof(bits));
		result = "";

		cin >> cnum >> length;

		for (int i = 0; i < cnum; i++) {
			string c;
			cin >> c;
			code.push_back(c);
		}


		cin >> incodenum;

		for (int m = 0; m < incodenum; m++) {
			cin >> bits[m];
		}


		//incodenum/length해서 인코딩된 문자열 개수를 이용해야 한다.
		for (int p = 0; p < (incodenum / length); p++) {
			memset(hammingdist, 0, sizeof(hammingdist));
			int min = 128;
			int min_idx = 26;

			for (int q = 0; q < cnum; q++) {

				for (int r = 0; r < length; r++) {
					char a = bits[(p*length) + r];//이 인코딩된 문자열들이 전에는 어떤 문자열이었을지 알아야 한다.
					char b = code[q][r];

					if (a != b) {
						hammingdist[q]++;
					}
				}

				if (hammingdist[q] < min) {
					min = hammingdist[q];
					min_idx = q;
				}

			}

			char res = 'A' + min_idx;
			result = result + res;

		}

		cout << result << endl;



	}
}