[백준 5220] Error Detection (C#, C++) - soo:bak
작성일 :
문제 링크
설명
입력으로 주어진 정수를 16
비트의 2
진수로 변환했을 때,
해당 2
진수에서 1
의 개수의 홀수
인지, 짝수
인지를 체크 비트
를 통해 확인하는 문제입니다.
문제의 조건에 따르면, 체크 비트
는 1
의 개수가 홀수일 때 1
이고, 짝수일 때 0
입니다.
따라서, 1
의 개수가 홀수
이고 체크 비트
가 1
이거나, 1
의 개수가 짝수
이고 체크 비트
가 0
이라면 Valid
를,
그렇지 않으면, Corrupt
를 출력합니다.
Code
[ C# ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
namespace Solution {
class Program {
static void Main(string[] args) {
var cntCase = int.Parse(Console.ReadLine()!);
for (int c = 0; c < cntCase; c++) {
var input = Console.ReadLine()!.Split(' ');
var num = int.Parse(input[0]);
var checkBit = int.Parse(input[1]);
var cntOne = Convert.ToString(num, 2).ToCharArray().Sum(b => b - '0');
if (cntOne % 2 == checkBit) Console.WriteLine("Valid");
else Console.WriteLine("Corrupt");
}
}
}
}
[ C++ ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int cntCase; cin >> cntCase;
for (int c = 0; c < cntCase; c++) {
int num, checkBit; cin >> num >> checkBit;
bitset<16> binary(num);
int cntOne = binary.count();
if (cntOne % 2 == checkBit) cout << "Valid\n";
else cout << "Corrupt\n";
}
return 0;
}