안녕하세요. 오늘은 코드잼을 풀어볼 거예요.

문제

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

아이디어

무조건 8글자씩 끊습니다.
그 다음에 I이면 1로 인식해서 1을 더해주는 방식으로 2진수를 10진수로 바꿔줍시다.
그대로 문자로 바꾼 다음에 출력합니다.

소스코드

#include <iostream>
#include <string>
using namespace std;

char change(string s)
{
    int ans = 0;
    for (char c : s)
    {
        ans *= 2;
        if (c == 'I') ans++;
    }
    return ans;
}

int main(void)
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    int T, N, TC = 0;
    string s;

    cin >> T;
    while (T--)
    {
        cin >> N >> s;
        string ans;
        for (int i = 0; i < N; i++)
            ans += change(s.substr(i * 8, 8));
        cout << "Case #" << ++TC << ": " << ans << "\n";
    }
}


감사합니다.

0개의 댓글