728x90
반응형
https://softeer.ai/practice/info.do?idx=1&eid=804
Softeer
연습문제를 담을 Set을 선택해주세요. 취소 확인
softeer.ai
문제 회고
주어진 규칙을 하나씩 구현해내는 문제였던 것 같다. 하나씩 차근차근해 나가 어렵지 않게 풀 수 있었다.
import sys
message = sys.stdin.readline().strip()
key = sys.stdin.readline().strip()
answer = ''
# 1. key 5x5에 배열
# 2. message 두 글자씩 규칙에 맞춰서 배열
# 3. 배열을 하나씩 확인하며 같은 행에 존재하면 오른쪽으로 한칸 이동한 칸에 적힌 글자를 사용 HE -> EI, XX -> ZZ
# 4. 같은 열에 존재한다면 아래로 한칸이동 LO -> RV
# 5. 서로 다른 열, 다른 행이라면 서로 칸의 열을 교환 LX -> YV => i,j k,l -> i,l k,j
alphabet = [i for i in 'ABCDEFGHIKLMNOPQRSTUVWXYZ']
key = [i for i in key]
set_key = set(key)
key = list(set_key)
chart = [[] * i for i in range(5)]
for i in range(len(key)):
r = i // 5
chart[r].append(key[i])
remain = list(set(alphabet) - set_key)
for i in range(len(remain)):
r = (i + len(key)) // 5
chart[r].append(remain[i])
pair = False
pair_msg = []
for i in range(len(message)):
if pair:
pair = False
continue
if pair == False and i == len(message) - 1:
pair_msg.append(message[i] + 'X')
continue
if message[i] == message[i + 1]:
if message[i] == 'X':
pair_msg.append(message[i] + 'Q')
else:
pair_msg.append(message[i] + 'X')
else:
pair_msg.append(message[i] + message[i + 1])
pair = True
for msg in pair_msg:
target = []
a, b = msg[0], msg[1]
for x in (a, b):
for i in range(5):
for j in range(5):
if x == chart[i][j]:
target.append([i, j])
a_coord, b_coord = target[0], target[1]
if a_coord[0] == b_coord[0]:
a_coord[1] += 1
b_coord[1] += 1
answer += chart[a_coord[0]][a_coord[1]%5] + chart[b_coord[0]][b_coord[1]%5]
elif a_coord[1] == b_coord[1]:
a_coord[0] += 1
b_coord[0] += 1
answer += chart[a_coord[0]%5][a_coord[1]] + chart[b_coord[0]%5][b_coord[1]]
else:
answer += chart[a_coord[0]][b_coord[1]] + chart[b_coord[0]][a_coord[1]]
print(answer)
728x90
반응형
'Study > algorithm' 카테고리의 다른 글
[softeer] [21년 재직자 대회 예선] 회의실 예약 (python) (0) | 2022.09.12 |
---|---|
[softeer] [21년 재직자 대회 예선] 이미지 프로세싱 (python) (0) | 2022.09.05 |
[programmers] 합승 택시 요금 (python) (0) | 2022.09.02 |
[softeer] [인증평가(1차) 기출] 로봇이 지나간 경로 (python) (0) | 2022.09.02 |
[softeer] [인증평가(1차) 기출] 안전운전을 도와줄 차세대 지능형 교통시스템 (python) (3) | 2022.09.01 |