본문 바로가기

Algorithm/Implementation

(C++) - 백준(BOJ) 5220 : Error Detection

반응형

https://www.acmicpc.net/problem/5220

 

5220번: Error Detection

In the midst of a fierce battle, Tony Stark’s suit constantly communicates with JARVIS for technical data. This data as transmitted takes the form of 16-bit integer values. However, due to various atmospheric issues (such as those created by all of that

www.acmicpc.net

이진법 변환, 함수를 구현해 푼 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

테스트 케이스 t를 선언 후 t만큼 하기 숫자들을 입력해줍니다.num, checkBit를 선언 후 입력해줍니다.

📔 풀이과정

이진법으로 변환하는 함수 bin을 수행 후 그 값을 지역변수 binString를 선언 후 할당해줍니다.

📔 정답출력

binString의 checkBIt가 같은지를 알아내는 함수 isSame을 수행한 결과 적절히 답을 출력합니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;
int t;

string bin(int num){
    int tmp = num;
    string binString = "";
    while(tmp){
        binString += to_string(tmp % 2);
        tmp/=2;
    }
    reverse(binString.begin(), binString.end());
    return binString;
}

bool isSame(string binString, int checkBit){
    int cntOne = 0;
    for(auto b : binString)
        if(b == '1') cntOne++;
    if(cntOne % 2) cntOne = 1;
    else cntOne = 0;
    return checkBit == cntOne;
}

int main(){
    cin >> t;
    while(t--){
        int num, checkBit;
        cin >> num >> checkBit;
        string binString = bin(num);
        if(isSame(binString, checkBit)) cout << "Valid\n";
        else cout << "Corrupt\n";
    }
}