티스토리 뷰

Algorithm

[백준] B1 2999 비밀 이메일 (java)

코딩브론즈 2020. 12. 22. 20:17

www.acmicpc.net/problem/2999

 

2999번: 비밀 이메일

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

www.acmicpc.net

 

풀이

 

1) 문자열의 길이(N)의 제곱근 (sqrt) 을 구함

2) 1~ sqrt 까지 포문 돌리면서 N%i 가 0일 경우 R 과 C 를 갱신

3) 2의 결과 R, C 로 배열을 만듬

4) 배열을 읽음

 

주의사항

 

1) 없다

 

package com.baekJoon;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.util.StringTokenizer;

public class BJ_B1_2999_비밀이메일 {
	static BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
	static StringTokenizer tokens;

	public static void main(String[] args) throws NumberFormatException, IOException {
		input = new BufferedReader(new StringReader(src));
		String str = input.readLine();
		int N = str.length();
		int sqrt = (int) Math.sqrt(N);
		int R = 0, C = 0;
		for(int i=1; i<=sqrt; i++) {
			if(N%i==0) {
				R = i;
				C = N/i;
			}
		}
		int cnt = 0;
		char map[][] = new char[R][C];
		for(int c=0; c<C; c++) {
			for(int r=0; r<R; r++) {
				map[r][c] = str.charAt(cnt++);
			}	
		}
		for(int r=0; r<R; r++) {
			for(int c=0; c<C; c++) {
				System.out.print(map[r][c]);
			}	
		}
	}
	static String src =
			"boudonuimilcbsai";
}

 

 

후기

 

이 문제 또한 내가 전에 못풀었던 문제인데 지금 푸니 너무 간단하게 풀었다.

요즘 스트레스를 많이 받는데 알고리즘을 풀때면 스트레스가 풀리는것 같다. 안풀리면 더 짜증나지만..

못푼 문제를 풀게된다는 것은 매우 기분 좋은 일이다.

'Algorithm' 카테고리의 다른 글

[백준] G5 15683 감시 (java)  (0) 2020.12.28
[백준] G5 14500 테트로미노 (java)  (1) 2020.12.22
[백준] S2 18442 우체국 1 (java)  (0) 2020.12.22
[백준] B1 18868 멀티버스 1 (java)  (0) 2020.12.22
[백준] G3 14890 경사로 (java)  (0) 2020.12.22
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함