SWEA 5122 수열편집

IngCoding·2022년 4월 11일
1

파이썬 #1 알고리즘

목록 보기
23/27

문제출처 SW Expert Academy
문제의 저작권은 SW Expert Academy에 있습니다.

문제소개

- N개의 숫자로 구성된 최초수열이 M번의 편집을 거친 후 완성
- 완성된 수열에서 인덱스 L을 출력하는 프로그램을 작성하시오.
-, 인덱스 L이 존재하지 않으면 -1을 출력

입력:
1
5 3 4 (N, M, K 최초수열길이 5, 편집 3, 인덱스 4 출력)
1 2 3 4 5 (최초수열)
I 2 7 (I 넣기 , 2번 인덱스 앞, 7 추가)
D 4   (D 삭제, 4번 인덱스)
C 3 8 (C 변경, 3번 인덱스를, 8)

출력:
#1 5

풀이접근

- if 문 활용해서 I, D, C 법칙 적용
- I -> insert, D -> pop, C -> '=' 활용

코드

for tc in range(1, int(input()) + 1):
    N, M, L = map(int, input().split()) # N개의 숫자, M번 편집, 인덱스 L 출력
    array = list(map(int, input().split())) # 최초 수열
    flag = 1 # array의 요소가 없는 경우 0으로 바뀜
    
    for _ in range(M):  # M번 편집
        rule = input().split()   # 법칙 입력 
        # 법칙적용 
        if rule[0] == 'I': 
            array.insert(int(rule[1]),int(rule[2]))
        elif rule[0] == 'D':
            if not array: 
                flag=0
                break
            array.pop(int(rule[1]))
        else:
            array[int(rule[1])] = int(rule[2])
    
    if len(array) > L: # 평범한 경우
        if flag: # array에 요소가 있는 경우 
            print(f'#{tc} {array[L]}')
        else: # array에 요소가 없는 경우 
            print(f'#{tc} -1')
    else: # L이 array의 최대 인덱스보다 큰 경우 
        print(f'#{tc} -1')
 1
 5 3 4
 1 2 3 4 5
 I 2 7
 D 4
 C 3 8


#1 5

정의된 변수 값 확인

array
[1, 2, 7, 8, 5]
rule
['C', '3', '8']
print(N,M,L)
5 3 4
flag
1
profile
Data & PM

0개의 댓글