난이도 : D3
문제번호 : 5110
※ 저의 풀이가 무조건적인 정답은 아닙니다.
다른 코드가 좀더 효율적이고 좋을 수 있습니다.
다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.
문제 주소 및 출처입니다.
목차
1. 문제 설명
2. 문제 해석
3. 소스 코드
1. 문제 설명
입력
첫 줄에 테스트케이스의 수 T가 주어진다. 1<=T<=50 |
출력
각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 완성된 수열의 맨 뒤부터 10개의 숫자를 역순으로 출력한다. |
예시
입력 | 출력 |
4 4 2 3 4 5 4 8 7 6 9 10 15 16 1 2 6 5 5 5 273 415 58 798 251 675 193 494 506 365 479 390 224 334 387 107 402 569 422 183 88 709 994 206 916 10 10 178 778 659 231 274 123 788 16 483 404 36 14 602 74 287 689 730 703 611 339 445 468 126 821 946 212 218 143 999 923 288 792 249 142 996 999 570 757 141 921 98 87 800 892 401 244 661 179 403 985 474 315 694 816 838 525 288 94 609 6 789 433 474 883 927 841 242 233 286 749 7 667 875 986 107 957 887 520 430 649 721 206 65 776 328 807 845 908 382 836 707 811 790 652 805 190 407 257 668 307 |
#1 16 15 10 9 5 6 7 8 4 4 #2 251 798 365 506 494 193 675 387 334 224 #3 404 483 16 788 123 274 231 659 778 178 |
2. 문제풀이
이 문제는 SWEA에 Intermediate에 있는 문제로 연결리스트를 구현해서 풀어봐야 합니다. |
3. 소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#D3 5110 수열 합치기
for t in range(1, int(input()) + 1):
N, M = map(int, input().split())
#첫 리스트 입력받기
linked_list = list(map(int, input().split()))
#리스트 하나 받았으니까 개수 -1
for _ in range(M-1):
#삽입할 리스트 받고
temp = list(map(int, input().split()))
check = True
#반복해서 체크
for i in range(len(linked_list)):
#삽입할 원소보다 크다면
if linked_list[i] > temp[0]:
#슬라이싱을 이용하여 삽입
linked_list[i:i] = temp
#체크변수 변경하고
check = False
#반복문 탈출
break
#끝까지 못찾았다면 제일 뒤에 추가
if check:
linked_list.extend(temp)
#뒤에 10개를 출력해야 하므로 슬라이싱 하고 뒤집기
print_list = reversed(linked_list[len(linked_list)-10:])
#결과 출력
print('#{} '.format(t), end='')
print(*print_list)
|
'코딩테스트 > SWExpertAcademy' 카테고리의 다른 글
컨테이너 운반 Python(SW Expert Academy, SWEA) (0) | 2020.05.20 |
---|---|
암호 Python(SW Expert Academy, SWEA) (0) | 2020.05.19 |
단순 2진 암호코드(SW Expert Academy) (0) | 2020.05.17 |
최대상금 Python(SW Expert Academy) (2) | 2020.05.16 |
이진수2 Python(SW Expert Academy) (0) | 2020.05.15 |
댓글