코딩테스트/SWEA
[Python, 파이썬] SWEA 1228. [S/W 문제해결 기본] 8일차 - 암호문1
알코딩
2024. 11. 10. 13:25
I(삽입) x, y, s라는 명령어가 주어졌을 때, 모든 명령어를 수행하고 나온 결과의 암호문의
처음 10자리의 숫자를 구하는 문제.
- I(삽입) x, y, s : 앞에서부터 x의 위치 바로 다음에 y개의 숫자를 삽입
첫 번째 줄 : 원본 암호문의 길이 N ( 10 ≤ N ≤ 20 의 정수)
두 번째 줄 : 원본 암호문
세 번째 줄 : 명령어의 개수 ( 5 ≤ N ≤ 10 의 정수)
네 번째 줄 : 명령어
T = 10 # 테스트케이스의 개수 T
for test_case in range(1, T+1):
N = int(input()) # 원본 암호 길이
original = input().split() # 원본 암호
Q = int(input()) # 질의의 개수
add = input().split('I ')[1:] # 덧붙일 암호들
for plus in add:
index = int(plus.split()[0]) # 붙이고 싶은 위치 번호
original = original[:index] + plus.split()[2:] + original[index:] # 덧붙여진 암호 문자열
print("#%d %s" % (test_case, ' '.join(original[:10])))
[문제풀이]
D3라 하기엔 무척 쉬웠다 근데 문제 설명이 좀 깔끔하지 않음....
덧붙일 연산들은 I 1 5 400905 336948 119288 I 8 6 436704 702451 762737
이런식으로 I를 기준으로 여러 연산이 주어진다.
그래서 I를 기점으로 각 질의를 나누고, 각각 수행한다.
나눠진 질의들은 x, y, 여러개의 s이다.
index = int(plus.split()[0]) # 붙이고 싶은 위치 번호
original = original[:index] + plus.split()[2:] + original[index:] # 덧붙여진 암호 문자열
그래서 질의에서 나눠 붙일 위치 번호와 덧붙여질 암호를 찾고, 그리고 원본 암호 중간에 끼워넣어 새 암호를 생성하는 과정을 반복해주면 끝!
그렇게 구한 암호의 처음 10자리 수가 답이다.