ALGORITHM/프로그래머스 | 백준 | 삼성 | 카카오

[백준] 2999번 비밀 이메일

SZCODE 2020. 4. 1. 00:53

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

 

2999번: 비밀 이메일

문제 매일 밤, 정인이는 상근이에게 이메일을 보낸다. 정인이는 자신의 이메일이 해킹당할 수도 있다는 생각에, 내용을 항상 암호화해서 보낸다. 정인이가 사용하는 암호 알고리즘은 다음과 같다. 정인이가 보내는 메시지는 총 N글자이다. 먼저, 정인이는 R<=C이고, R*C=N인 R과 C를 고른다. 만약, 그러한 경우가 여러 개일 경우, R이 큰 값을 선택한다. 그 다음, 행이 R개고, 열이 C개인 행렬을 만든다. 이제 메시지를 행렬에 옮긴다. 첫 번째 행의 첫

www.acmicpc.net

목표: 입력 받은 메시지를 암호화 하기 전 메시지로 출력하기
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		String s = sc.next();
		
		//입력 받은 글자를 세기
		int N=s.length();
		
		int r = 0, c = 0,rf = 0 ,cf =0;
		int max = 0;
		
		for (cf = 1; cf <= N; cf++) {
			for (rf = 1; rf <= cf; rf++) {
				if(cf * rf == N ) {
					if(r < rf) {
						r = rf;
						c = cf;
					}
				}
			}
		}
		int index =0;
		char[][] arr = new char[c][r];
		//행 열에 입력 받기 열 0 행 1 2 3 4 
		for (int i = 0; i < c; i++) {
			for (int j = 0; j < r; j++) {
				arr[i][j] = s.charAt(index);
				index++;
			}
		}
		// 출력하기 행 0 열 1 2 3 4
		for (int j = 0; j < r; j++) {
			for (int i = 0; i < c; i++) {
				System.out.print(arr[i][j]);
			}
		}
		
	}

}