출처
https://swexpertacademy.com/main/solvingProblem/solvingProblem.do
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
- 시간 : 10개 테스트케이스를 합쳐서 Python의 경우 2초
- 메모리 : 힙, 정적 메모리 합쳐서 256MB 이내, 스택 메모리 1MB 이내
※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.
보통의 정렬은 오름차순이나 내림차순으로 이루어지지만, 이번에는 특별한 정렬을 하려고 한다.
N개의 정수가 주어지면 가장 큰 수, 가장 작은 수, 2번째 큰 수, 2번째 작은 수 식으로 큰 수와 작은 수를 번갈아 정렬하는 방법이다.
예를 들어 1부터 10까지 10개의 숫자가 주어지면 다음과 같이 정렬한다.
10 1 9 2 8 3 7 4 6 5
주어진 숫자에 대해 특별한 정렬을 한 결과를 10개까지 출력하시오
[입력]
첫 줄에 테스트 케이스 개수 T가 주어진다. 1<=T<=50
다음 줄에 정수의 개수 N이 주어지고 다음 줄에 N개의 정수 ai가 주어진다. 10<=N<=100, 1<=ai<=100
[출력]
각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 특별히 정렬된 숫자를 10개까지 출력한다.
입력
3
10
1 2 3 4 5 6 7 8 9 10
10
67 39 16 49 60 28 8 85 89 11
20
3 69 21 46 43 60 62 97 64 30 17 88 18 98 71 75 59 36 9 26
출력
#1 10 1 9 2 8 3 7 4 6 5
#2 89 8 85 11 67 16 60 28 49 39
#3 98 3 97 9 88 17 75 18 71 21
Pass 코드
from collections import deque
T = int(input())
for t in range(T):
N = int(input())
# 리스트 array에 N개의 숫자를 입력받은 후 정렬
array = list(map(int, input().split()))
array.sort()
# pop, popleft를 사용하기 위해 큐 선언 후 array 값 넣기
# queue = deque([1,2,3,4,5,6,7,8,9,10])
queue = deque([])
for a in array:
queue.append(a)
# pop, popleft 를 이용해서 큰값 작은값 번갈아가며 result에 삽입
result = []
while queue:
if len(result) == 10:
break
result.append(queue.pop())
result.append(queue.popleft())
result = " ".join(map(str, result))
print("#{} {}".format(t+1, result))
해설
2021.05.27 - [파이썬 Python] - [파이썬 Python] collections 라이브러리 / deque / Counter
[파이썬 Python] collections 라이브러리 / deque / Counter
collections collections 라이브러리는 유용한 자료구조를 제공하는 표준 라이브러리다. 표준 라이브러리 : 특정한 프로그래밍 언어에서 자주 사용되는 표준 소스코드를 미리 구현해 놓은 라이브러리
devmath.tistory.com
2021.05.26 - [파이썬 Python] - [파이썬 Python] split / join 함수 : 리스트의 문자열 합치기 나누기
[파이썬 Python] split / join 함수 : 리스트의 문자열 합치기 나누기
split 형식 : 문자열.split(구분자) split 함수는 문자열을 나누는 함수입니다. 매개변수로 구분자를 주면, 해당 구분자를 기준으로 문자열을 잘라 리스트 형식으로 반환합니다. 만약, 매개변수로 아
devmath.tistory.com
'코딩테스트 > 삼성 SW Expert Academy' 카테고리의 다른 글
4839. [파이썬 S/W 문제해결 기본] 2일차 - 이진탐색 (0) | 2021.07.20 |
---|---|
4837. [파이썬 S/W 문제해결 기본] 2일차 - 부분집합의 합 (0) | 2021.07.20 |
4836. [파이썬 S/W 문제해결 기본] 2일차 - 색칠하기 (0) | 2021.07.20 |
4835. [파이썬 S/W 문제해결 기본] 1일차 - 구간합 / SW Expert Academy (1) | 2021.07.14 |
4834. [파이썬 S/W 문제해결 기본] 1일차 - 숫자 카드 / SW Expert Academy (0) | 2021.07.14 |