https://www.acmicpc.net/problem/2999
2999번: 비밀 이메일
정인이는 원래 "bombonisuuladici"를 보내려고 했다. 이 메시지는 16글자이므로, 정인이는 1*16, 2*8, 4*4 행렬을 선택할 수 있다. R이 가장 큰 것은 4*4이므로, 4*4를 선택한다. 정인이가 만든 행렬은 다음과
www.acmicpc.net
난이도 : 브론즈 1
태그 : 구현, 문자열
1. 설명
R <= C이고, R * C = N인 경우 중, R이 가장 큰 값을 구해 문자열을 해독하는 문제입니다.
2. 소스코드
<python />
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번째 문자를 하나씩 출력합니다.
'코딩테스트 > Python' 카테고리의 다른 글
[백준 2675번] [Python] 문자열 반복 (0) | 2023.01.15 |
---|---|
[백준 2941번] [Python] 크로아티아 알파벳 (0) | 2022.12.21 |
[백준 2057번] [Python] 팩토리얼 분해 (0) | 2022.11.29 |
[백준 2909번] [Python] 캔디 구매 (0) | 2022.11.29 |
[백준 1427번] [Python] 소트인사이드 (0) | 2022.11.26 |