coding test

[파이썬] 5108. 숫자 추가

잔망루피 2021. 1. 29. 21:28

※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.


N개의 10억 이하 자연수로 이뤄진 수열이 주어진다.

이 수열은 완성된 것이 아니라 M개의 숫자를 지정된 위치에 추가하면 완성된다고 한다.

완성된 수열에서 인덱스 L의 데이터를 출력하는 프로그램을 작성하시오.

다음은 숫자를 추가하는 예이다.

인덱스

0

1

2

3

4

수열

1

2

3

4

5

 

2 7 -> 2번 인덱스에 7을 추가하고 한 칸 씩 뒤로 이동한다.
 

인덱스

0

1

2

3

4

5

수열

1

2

7

3

4

5



4 8 -> 4번 인덱스에 8을 추가하고 한 칸 씩 뒤로 이동한다.
 

인덱스

0

1

2

3

4

5

6

수열

1

2

7

3

8

4

5




[입력]

첫 줄에 테스트케이스의 수 T가 주어진다. 1<=T<=50

다음 줄부터 테스트 케이스의 별로 첫 줄에 수열의 길이 N, 추가 횟수 M, 출력할 인덱스 번호 L이 주어지고, 다음 줄에 수열이 주어진다.

그 다음 M개의 줄에 걸쳐 추가할 인덱스와 숫자 정보가 주어진다. 5<=N<=1000, 1<=M<=1000, 6<=L<=N+M

[출력]

각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다.

입력 출력
3
5 2 5
1 2 3 4 5
2 7
4 8
5 5 4
13787 32221 32402 32498 4169
3 5902
3 9752
3 27737
1 14133
0 16547
10 10 8
16243 26767 22174 25277 17456 13398 29850 22297 1382 31246
9 23198
7 17514
11 24247
0 25306
2 9104
6 28112
12 7491
10 26972
17 22639
12 28722
#1 4
#2 32402
#3 13398

 

🎀 나의 풀이

 

T = int(input())
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
    N, M, L = map(int, input().split())			# 수열의 길이, 추가 횟수, 출력할 인덱스 번호
    num = list(map(int, input().split()))		# 수열
    for _ in range(M) :
        idx, n = map(int, input().split())		# 추가할 인덱스와 숫자 정보
        num.insert(idx, n)
    print(f"#{test_case} {num[L]}")

 

insert를 이용해서 추가할 인덱스 idx에 숫자 n을 삽입했다.

 

🎁 다른사람 풀이

 

TC = int(input())
for tc in range(1, TC+1):
    N, M, L = map(int, input().split())
    arr = list(map(int, input().split()))
    for i in range(M):
        a, b = map(int, input().split())
        arr.insert(a, b)
    print("#%s %d" % (tc, arr[L]))

 

나랑 같은 알고리즘.

 

T = int(input())
for test_case in range(1, T + 1):
    N, M, L = map(int, input().split())
    lst = [i for i in map(int, input().split())]
    for _ in range(M):
        lst.insert(*map(int, input().split())) # 가변인자
    print('#{} {}'.format(test_case, lst[L]))

 

insert 함수의 파라미터로 위치 가변 인자를 사용함.  

'위치 가변 인자'를 사용하면 임의의 개수만큼 입력을 받을 수 있다.

반응형

'coding test' 카테고리의 다른 글

[파이썬] 5120. 암호  (0) 2021.02.01
[파이썬] 5110. 수열 합치기  (0) 2021.01.29
[파이썬] 5102. 노드의 거리  (0) 2021.01.27
[파이썬] 5099. 피자 굽기  (0) 2021.01.26
[파이썬] 5105. 미로의 거리  (0) 2021.01.25