Computer Science/Algorithm Problem

백준] 4597 - 패리티(ACM-ICPC Regionals)

TwinParadox 2018. 12. 3. 20:43
728x90

시간 제한 : 1초

메모리 제한 : 128MB




입력

입력은 여러 개의 비트 스트링으로 이루어져 있다. 각 비트 스트링은 한 줄로 이루어져 있고, 길이는 1~31비트이다. 또, 비트 스트링의 마지막 문자는 e 또는 o이다. (e: 짝수 패리티, o: 홀수 패리티) 마지막 줄에는 '#'이 주어진다.




출력

입력으로 주어진 각각의 비트 스트링에 대해서, 마지막 문자를 올바른 비트로 바꾼 비트 스트링을 출력한다.




소스코드

#include <iostream>
#include <string>
using namespace std;
int main(void)
{
	while (1)
	{
		int one = 0, len;
		string str;
		cin >> str;
		if (str == "#")
			break;

		len = str.length();
		for (int i = 0; i < len - 1; i++)
			if (str[i] == '1')
				one++;

		if (str[len - 1] == 'e')
		{
			if (one % 2 == 0)
				str[len - 1] = '0';
			else
				str[len - 1] = '1';
		}
		else
		{
			if (one % 2 == 0)
				str[len - 1] = '1';
			else
				str[len - 1] = '0';
		}
		cout << str << '\n';
	}
}




Tip

간단한 문자열 처리 문제로, 1의 홀수 짝수만 체크하고 패리티에 맞춰 마지막 비트를 정해주면 되는 문제다.



728x90
728x90