scone-lemon
[IM 대비] BOJ_2999 비밀 이메일 본문
https://www.acmicpc.net/problem/2999
2999번: 비밀 이메일
정인이는 원래 "bombonisuuladici"를 보내려고 했다. 이 메시지는 16글자이므로, 정인이는 1*16, 2*8, 4*4 행렬을 선택할 수 있다. R이 가장 큰 것은 4*4이므로, 4*4를 선택한다. 정인이가 만든 행렬은 다음과
www.acmicpc.net
package IM;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
// 비밀이메일
public class BOJ_2999 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st = null;
String input = br.readLine();
int size = input.length();
int max = Integer.MIN_VALUE;
for (int i = 1; i <= size; i++) {
if (size%i==0 && i<=Math.sqrt(size)) {
max = size/i;
}
}
int col = max;
int row = size/max;
//System.out.println(col);
//System.out.println(row);
char[][] arr = new char[col][row];
int num = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
arr[i][j] = input.charAt(num);
num++;
}
}
//System.out.println(Arrays.deepToString(arr));
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length; j++) {
sb.append(arr[j][i]);
}
}
System.out.println(sb.toString());
}
}
깜빡하고 마지막 테스트케이스를 안 넣어 봤는데 백준에서 돌리자마자 indexoutof 어쩌구 에러가 났다. 알고보니 col과 row를 혼동해서 그런 것 같다. 구글에서 코드를 참고해서 아래와같이 수정했다.
package IM1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class BOJ_2999 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String input = br.readLine();
int size = input.length();
int col = 0, row = 0; // col:열, row:행
for (int i = 1; i <= Math.sqrt(size); i++) {
if(size%i==0) {
col = i;
row = size/i;
}
}
char[][] map = new char[row][col];
int cnt = 0;
for (int r = 0; r < row; r++) {
for (int c = 0; c < col; c++) {
map[r][c] = input.charAt(cnt++);
}
}
System.out.println(Arrays.deepToString(map));
for (int c = 0; c < col; c++) {
for (int r = 0; r < row; r++) {
sb.append(map[r][c]);
}
}
System.out.println(sb.toString());
}
}
'ALGORITHM > BOJ' 카테고리의 다른 글
[IM 대비] BOJ_3985 롤 케이크 (0) | 2021.08.28 |
---|---|
[IM 대비] BOJ_2798 블랙잭 (0) | 2021.08.28 |
[IM 대비] BOJ_2941 크로아티아 알파벳 (0) | 2021.08.28 |
[IM 대비] BOJ_10163 색종이 (0) | 2021.08.24 |
[IM 대비] BOJ_2669 직사각형 네 개의 합집합의 면적 구하기 (0) | 2021.08.23 |