문제
나의코드: 55분
T = 10
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
num_1 = int(input())#원본 암호문의 길이 N ( 100 ≤ N ≤ 200 의 정수)
input_list = list(map(int, input().split())) #원본 암호문
num_count = int(input())#세 번째 줄 : 명령어의 개수 ( 10 ≤ N ≤ 20 의 정수)
input_target = list(input().split())#명령문
input_target += ["end"]
state=input_target[0]
state_list = []
for i in range(1,len(input_target)):
if input_target[i] == "I" or input_target[i] == "D" or input_target[i] == "end":
if state == "I":
tmp_list = state_list[2:]
tmp_list.reverse()
for j in range(state_list[1]):
input_list.insert(state_list[0],tmp_list[j])
else:
for j in range(state_list[1]):
del input_list[state_list[0]]
state = input_target[i]
state_list = []
else:
state_list.append(int(input_target[i]))
print("#"+str(test_case)," ".join(map(str,input_list[:10])))
문제 자체가 어려운 것이 아니였다. 단순히 풀 때 오류를 잡지 못해서 결국 VSCODE에서 풀고 복붙하여 문제를 해결
자동완성이 없는 환경에서 35분정도 계속 헤매다가 그냥 개발툴을 활용해버렸다.
분명 같은코드인데 왜 처음에 오류가 있다가 개발툴에서 돌리니 오류 안나서 복붙해보면 SWEA에서 오류가 안난다(?)
VS코드에서 오류를 고치고 미흡한 부분을 고치니 바로 통과는 하였다.
시간이 걸린 부분은 다음과 같다.
1. 마지막 명령어처리를 하지 않은 점
내가 짠 코드는 명령어를 발견(I,D)하면 이전에 명령어를 적용하고 state와 state_list를 비우는 식으로 처리했다.
마지막 명령어는 I,D를 발견하지 못하고 종료가 되므로 실행되지 않아 마지막에 end를 붙여서 실행되게 처리하였다.
2.insert를 하기위해 reverse를 했어야 했다.
'공부-코딩테스트 > 코테풀이 - 자바, 파이썬' 카테고리의 다른 글
1859. 백만 장자 프로젝트 (코딩테스트, SW Expert Academy) (2) | 2022.05.10 |
---|---|
5356. 의석이의 세로로 말해요 (코딩테스트, SW Expert Academy) (0) | 2022.05.10 |
1220. [S/W 문제해결 기본] 5일차 - Magnetic (코딩테스트, SW Expert Academy) (0) | 2022.05.07 |
1206. [S/W 문제해결 기본] 1일차 - View (코딩테스트, SW Expert Academy) (0) | 2022.05.06 |
2001. 파리 퇴치 (코딩테스트, SW Expert Academy) (0) | 2022.05.06 |
댓글