문제 해결 과정
명령어 배열을 구분하기 위해 new_arr와 stack 배열을 빈 배열로 선언
'I'를 기준으로 stack에 문자열들을 집어넣고 'I'가 다시 나오면 new_arr에 추가한 후, stack을 빈 배열로 초기화하고, 마지막 명령어의 경우 'I'가 뒤에 안나오므로 원소의 인덱스 위치가 명령어 배열의 길이와 같으면 stack 배열에 추가해준 후 new_arr에 추가해 모든 명령어들을 'I'를 기준으로 구분해서 new_arr 배열에 추가
그 후 new_arr 길이만큼 순회하면서 new_arr를 거꾸로 arr배열에 추가
for tc in range(1,11):
arr_leng = int(input())
arr = list(map(int, input().split()))
command_leng = int(input())
commad_arr = input().split()
new_arr = []
stack = []
for c in commad_arr:
if len(stack) == 0:
stack.append(c)
else:
if c == 'I':
new_arr.append(stack)
stack = []
stack.append(c)
elif commad_arr.index(c) == len(commad_arr) - 1:
stack.append(c)
new_arr.append(stack)
stack = []
else:
stack.append(c)
for i in range(len(new_arr)):
start_idx = int(new_arr[i][1])
repeat_cnt = int(new_arr[i][2])
add_arr = new_arr[i][3:]
for elem in add_arr[::-1]:
elem = int(elem)
arr.insert(start_idx, elem)
ans_arr = arr[:10]
print(f'#{tc}', *ans_arr)
새 코드
문자열 I는 필요 없으므로 입력을 받을 때, 'I'를 기준으로 나누고, [1:] 을 통해 'I'를 제외한 나머지 값들을 저장
new_command 배열에 공백을 기준으로 값들을 추가
arr에 들어갈 start_idx를 선언 후, arr[start_idx:start_idx]를 통해 start_idx 자리에 추가할 값들을 넣어줌
''.join(map(str, ans_arr)를 통해 한 줄에 배열안의 값을 모두 출력
(cf: int형은 ''.join 사용 불가하므로 str로 변환)
for tc in range(1,11):
n = int(input())
arr = list(map(int, input().split()))
command_leng = int(input())
# 첫 번째 요소 'I'를 제거하고 저장
command = input().split("I")[1:]
for i in command:
# 공백을 기준으로 문자열 새로 저장
new_command = list(map(int, i.split()))
start_idx = new_command[0]
num_to_add_list = new_command[2:]
# start_idx 자리에 추가할 숫자들 저장
arr[start_idx:start_idx] = num_to_add_list
ans_arr = arr[:10]
print(f'{tc} {''.join(map(str, ans_arr))}')
'CodingTest' 카테고리의 다른 글
Programmers - 귤 고르기 (0) | 2024.03.23 |
---|---|
Programmers - 할인 행사 (1) | 2024.03.23 |
Programmers - 개인 정보 수집 유효기간 (1) | 2024.03.22 |
Programmers - 신고 결과 받기 (0) | 2024.03.18 |
Programmers - 신규 아이디 추천 (0) | 2024.03.18 |