티스토리 뷰

728x90

문제

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

 

2999번: 비밀 이메일

정인이는 원래 "bombonisuuladici"를 보내려고 했다. 이 메시지는 16글자이므로, 정인이는 1*16, 2*8, 4*4 행렬을 선택할 수 있다. R이 가장 큰 것은 4*4이므로, 4*4를 선택한다. 정인이가 만든 행렬은 다음과

www.acmicpc.net

 

풀이 및 소스코드

 

그냥 원상복구 해준 후, 출력해줬다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

class Main {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		
		String s = br.readLine();
		int n =s.length();
		
		int r= 0;
		for(int i=1;i<=Math.sqrt(n);i++) {
			//1부터 루트n까지 n과 나눠지는 값들 중 가장 큰 수를 r에 넣는다.
			if(n%i==0) {
				r = Math.max(r, i);
			}
		}
		int c = n/r;
		
		char[][] msg = new char[r][c];
		int idx = 0;
		for(int j=0;j<c;j++) {
			for(int i=0;i<r;i++) {
				msg[i][j]=s.charAt(idx++);
			}
		}
		
		for(int i=0;i<r;i++) {
			for(int j=0;j<c;j++) {
				sb.append(msg[i][j]);
			}
		}
		System.out.println(sb);
	}

}
반응형