반응형
SMALL
문제 정보
문제명 - 비밀 이메일
난이도 - 브론즈 I
문제 번호 - 2999번
문제 링크
문제
매일 밤, 정인이는 상근이에게 이메일을 보낸다. 정인이는 자신의 이메일이 해킹당할 수도 있다는 생각에, 내용을 항상 암호화해서 보낸다.
정인이가 사용하는 암호 알고리즘은 다음과 같다. 정인이가 보내는 메시지는 총 N글자이다.
먼저, 정인이는 R<=C이고, R*C=N인 R과 C를 고른다. 만약, 그러한 경우가 여러 개일 경우, R이 큰 값을 선택한다.
그 다음, 행이 R개고, 열이 C개인 행렬을 만든다.
이제 메시지를 행렬에 옮긴다. 첫 번째 행의 첫 번째 열부터 C번째 열까지 메시지를 순서대로 옮긴 뒤, 남은 메시지는 두 번째 행, 세 번째 행,... R번째 행에 첫 번째 행을 채운 방법과 동일한 순서대로 옮긴다.
행렬에 모두 메시지를 옮겼다면, 이 것을 첫 번째 열의 첫 번째 행부터 R번째 행까지 차례대로 읽으면서 다시 받아 적는다. 그 다음에, 두 번째 열, 세 번째 열,..., C번째 열에 쓰여 있는 문자를 첫 번째 열을 읽은 방법과 동일하게 받아적는다.
상근이는 매일 밤 정인이의 메시지를 해독하는데 지쳤다. 정인이의 암호 이메일이 주어졌을 때, 이를 해독하는 프로그램을 작성하시오.
입력
첫째 줄에 상근이가 받은 메시지가 주어진다. 이 메시지는 알파벳 소문자로만 이루어져 있고, 최대 100글자이다.
출력
첫째 줄에 상근이가 받은 메시지를 해독한 메시지를 출력한다.
예제 입력/출력
정인이는 원래 "bombonisuuladici"를 보내려고 했다. 이 메시지는 16글자이므로, 정인이는 1*16, 2*8, 4*4 행렬을 선택할 수 있다. R이 가장 큰 것은 4*4이므로, 4*4를 선택한다.
예제 입력 예제 출력 bok bok koaski kakosi boudonuimilcbsai bombonisuuladici
정인이가 만든 행렬은 다음과 같을 것이다.
알고리즘 분류
● 구현
● 문자열
소스코드
package Lv1_Bronze;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* @author HanHoon
* @category 구현, 문자열
* https://www.acmicpc.net/problem/2999
*/
public class BOJ_B1_2999_비밀_이메일 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
char[] msg = br.readLine().toCharArray();
int R = 0;
int C = 0;
for (int i = 1; i < (int)Math.sqrt(msg.length)+1; i++) {
if(msg.length%i == 0) {
R = i;
C = msg.length/i;
}
}
char[][] sec = new char[R][C];
int count = 0;
for (int j = 0; j < C; j++) {
for (int i = 0; i < R; i++) {
sec[i][j] = msg[count++];
}
}
for (char[] is : sec) {
for (char a : is) {
System.out.print(a);
}
}
}
}
BaekJoon List
기회는 준비된 자에게 찾아온다.
반응형
LIST
'BaekJoon > Bronze' 카테고리의 다른 글
[BOJ/JAVA] 백준 10448 : 유레카 이론(자바) (0) | 2022.03.25 |
---|---|
[BOJ/JAVA] 백준 3985 : 롤 케이크 (자바) (0) | 2022.03.25 |
[BOJ/JAVA] 백준 2851 : 슈퍼 마리오 (자바) (0) | 2022.03.25 |
[BOJ/JAVA] 백준 2839 : 설탕 배달 (자바) (0) | 2022.03.25 |
[BOJ/JAVA] 백준 2669 : 직사각형 네개의 합집합의 면적 구하기 (자바) (0) | 2022.03.25 |
댓글