Koala - 14기/코딩테스트 준비 스터디

[백준/C++] 1855번 : 암호

소코기 2024. 3. 17. 19:57
  • 문제

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

 

1855번: 암호

준표와 세준이는 서로 솔루션을 토론 하면서 다른 사람이 자신들의 솔루션을 듣지 못하게 하도록 서로 메시지를 주고받을 때 메시지를 암호화 하여서 주고받았다. 암호를 만드는 방법은 다음과

www.acmicpc.net

  • 코드
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <stdio.h>
#include <queue>
#include <vector>
#include <unordered_map>
#include <set>
#include <map>
#include<cmath>
#include<stack>
#include<deque>
#define LL long long
using namespace std;
char arr[20][20];

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	int b = 0;
	string s;
	cin >> b;
	cin >> s;
	int cnt = 0;
	int a = s.length() / b;
	for (int i = 0; i < a; i++) {
		for (int j = 0; j < b; j++) {
			if (i % 2 == 0) {
				arr[i][j] = s[cnt];
				
			}
			else {
				arr[i][b - j - 1] = s[cnt];
				
			}
			cnt++;
		}
	}
	
	for (int j = 0; j < b; j++) {
		for (int i = 0; i < a; i++) {
			cout << arr[i][j];
		}
	}
	return 0;
}
  • 문제 해설

암호화된 문자를 위치되어야할 곳으로 순서대로 넣어주면 된다. 행의 인덱스가 짝수일 경우 왼쪽에서 오른쪽으로, 홀수인 경우 오른쪽에서 왼쪽으로 넣어주고 출력은 왼쪽부터 위에서 아래로 해주면 된다.