PS

BOJ 6616 : 문자열 암호화

lickelon 2025. 2. 20. 00:19
  • 문제 링크 : boj.kr/6616
  • 난이도 : S3
  • 태그 : 문자열

코드

#include <bits/stdc++.h>

#define all(x) (x).begin(), (x).end()

#define INF 0x7FFFFFFF

using namespace std;

using ll = long long;
using ld = long double;
using pii = pair<int,int>;
using pll = pair<ll, ll>;

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    while(true) {
        int N;
        cin >> N;
        if(N == 0) break;
        string s;
        getline(cin, s);
        getline(cin, s);
        s.erase(remove(s.begin(), s.end(), ' '), s.end());
        transform(s.begin(), s.end(), s.begin(), ::toupper);
        vector<char> ans(s.length());

        int idx = 0;
        int cnt = 0;
        while(cnt < s.length()) {
            for(int i = idx; i < s.length(); i += N) {
                ans[i] = s[cnt];
                cnt++;
            }
            idx++;
        }
        for(auto e : ans) {
            cout << e;
        }
        cout << "\n";
    }

    return 0;
}

풀이

문자열을 대문자로만 이루어진 평문으로 변환해준다.

이후엔 규칙에 맞추어 잘 배치해주면 된다.

728x90