SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
📌 작성한 코드
for tc in range(1,11):
n = int(input())
cryto = list(input().split())
m = int(input())
s = list(input().split())
while True:
if len(s) == 0: break
if s[0] == 'I':
x = int(s[1])
y = int(s[2])
cryto = cryto[:x] + s[3:3+y] + cryto[x:]
s = s[y+3:]
elif s[0] == 'D':
x = int(s[1])
y = int(s[2])
cryto = cryto[:x] + cryto[x+y:]
s = s[3:]
elif s[0] == 'A':
y = int(s[1])
cryto = cryto + s[2:2+y]
s = s[y+2:]
print(f'#{tc} {" ".join(cryto[:10])}')
📌 풀이
1. Insert(I)일 때
if s[0] == 'I': // 0번은 명령어
x = int(s[1]) // 1은 x
y = int(s[2]) // 2는 y
cryto = cryto[:x] + s[3:3+y] + cryto[x:] // x전까지 자르기 + y개의 삽입할 문자열 + x 이후로 자르기
s = s[y+3:] // 이미 사용한 명령문 부분 잘라주기
2. Delete(D)일 때
elif s[0] == 'D': // 0은 명령어
x = int(s[1]) // 1은 x
y = int(s[2]) // 2는 y
cryto = cryto[:x] + cryto[x+y:] // x만큼 자르고 + 삭제할 y만큼 제외하고 뒷부분 잘라서 붙이기
s = s[3:] // 사용한 명령문 삭제
3. Add(A)일 때
elif s[0] == 'A': // 0은 명령어
y = int(s[1]) // 1은 추가할 길이 y
cryto = cryto + s[2:2+y] // 맨뒤에 y 길이의 명령문 추가해주기
s = s[y+2:] // 사용한 명령문 삭제
4. 남아있는 명령어 없으면 반복 끝내기
if len(s) == 0: break

'알고리즘 > SWEA' 카테고리의 다른 글
| [Python] SWEA D3 : 6692 - 다솔이의 월급 상자 (0) | 2023.11.17 |
|---|---|
| [Python] SWEA D3 : 5431 - 민석이의 과제 체크하기 (0) | 2023.11.17 |
| [Python] SWEA D3 : 3131 - 100만 이하의 모든 소수 (0) | 2023.11.17 |
| [Python] SWEA D3 : 9280. 진용이네 주차타워 (1) | 2023.11.17 |
| [Python] SWEA D3 : 1873 - 상호의 배틀필드 (0) | 2023.11.17 |