Uknow's Lab.
article thumbnail

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

 

2999번: 비밀 이메일

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

www.acmicpc.net

 

난이도 : 브론즈 1
태그 : 구현, 문자열

 

 

설명

R <= C이고, R * C = N인 경우 중, R이 가장 큰 값을 구해 문자열을 해독하는 문제입니다.

 

 

소스코드

str = input()
len = len(str)

x, y = 0, 0

for i in range(1, int(len / 2) + 1):
    for j in range(i, len + 1):
        if i * j == len:
            x, y = i, j

for i in range(x):
    for j in range(y):
        print(str[i + j * x], end='')

 

첫 이중 for문은 R, C를 구하는 부분입니다.

R <= C, R * C = N 중 R이 가장 큰 값을 찾기 위해,

문자열 길이의 절반만큼 반복하며, 조건에 맞는 R, C를 찾습니다.

 

두 번째 이중 for문은 문자열을 해독하는 부분입니다.

boudonuimilcbsai 문자열이 있을 때,

boud / onui / milc / bsai 4개의 부분으로 자르고,

각 문자열의 i번째 문자를 하나씩 출력합니다.

profile

Uknow's Lab.

@유노 Uknow

인생은 Byte와 Double 사이 Char다. 아무말이나 해봤습니다.