CodingTest

[SWEA] 1228. [S/W 문제해결 기본] 8일차 - 암호문1 (Python/D3)

취업하고싶다! 2024. 11. 7. 17:01
 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

문제 해결 과정

명령어 배열을 구분하기 위해 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