티스토리 뷰
코딩 테스트/SW Expert Academy
[SW Expert Academy] 1230. [S/W 문제해결 기본] 8일차 - 암호문3 파이썬 정답 코드
leego 2023. 5. 8. 21:271. 문제 내용
2. 접근 방식
- 자료구조: List VS deque
입력받은 명령어는 왼쪽에서부터 값을 꺼내 활용할 테니, 시간 복잡도가 O(1)인 popleft()를 사용하기 위해 deque 구조를 사용할까 고민하였다. 그러나 D (삭제)를 슬라이싱으로 처리할 계획이었기 때문에 리스트를 선택하였다. (deque는 슬라이싱이 불가능하다)
문제가 조금 불친절했다. x의 위치라는 것이 1) x라는 값의 인덱스인지 2) index가 x인지 불명확하다고 생각했다. 그래도 이것은 주어진 테스트 케이스를 탐색하며 2)의 의미라는 것을 알 수 있었다. 그러나 테스트 케이스가 너무 길었고, 입력 조건이 간단한 테스트 케이스를 만들 수 없는 구조였다...
3. 정답 코드
T = 10
for test_case in range(1, T + 1):
n = int(input())
code =list(input().split())
m = int(input())
instructions = list(input().split())
while instructions :
instruction = instructions.pop(0)
if instruction == 'I' :
x = int(instructions.pop(0))
y = int(instructions.pop(0))
for i in range(y) :
code.insert(x+i, instructions.pop(0))
elif instruction == 'D' :
x = int(instructions.pop(0))
y = int(instructions.pop(0))
if x - y == 0 :
code = code[x:]
else :
code = code[:x-y] + code[x:]
elif instruction == 'A' :
y = int(instructions.pop(0))
for i in range(y) :
code.append(instructions.pop(0))
print(f'#{test_case}', end=' ')
for value in code[:10] :
print(value, end=' ')
print()
728x90
'코딩 테스트 > SW Expert Academy' 카테고리의 다른 글
[SW Expert Academy] 2805. 농작물 수확하기 파이썬 정답 코드 (0) | 2023.05.12 |
---|---|
[SW Expert Academy] 1234. [S/W 문제해결 기본] 10일차 - 비밀번호 파이썬 정답 코드 (0) | 2023.05.08 |
[SW Expert Academy] 1220. [S/W 문제해결 기본] 5일차 - Magnetic 파이썬 정답 코드 (0) | 2023.05.05 |
[SW Expert Academy] 1225. [S/W 문제해결 기본] 7일차 - 암호생성기 파이썬 정답 코드 (0) | 2023.05.05 |
[SW Expert Academy] 1289. 원재의 메모리 복구하기 파이썬 정답 코드 (0) | 2023.05.05 |