N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
import sys
sys.stdin = open('example.txt', 'r')
input = sys.stdin.read().split()
testCase = int(input[0])
input.pop(0)
nums = list(map(int, input))
result = []
# print(nums)
for i in range(testCase):
result.append(min(nums))
nums.remove(min(nums))
for num in result:
print(num)
이 문제를 정렬을 하는 문제이다.
파이썬에 내장함수로 sort()
와 sorted()
가 있고 이를 활용하면 정말 쉽게 이 문제는 풀린다
nums.sort()
print(nums)
하지만 이를 활용하지 않고 풀고싶어 다른 방식을 생각해보았다.
내가 푼 방식은 정렬된 새로운 배열(result
)을 만드는 방식으로 진행하였다.
기존의 배열에서 최솟값을 취득한 후 새로운 배열(result
)에 넣고 기존의 배열에는 최솟값을 삭제한다.
이를 테스트케이스 개수만큼 반복을 하면 정렬이 완료된다.
여기서 주의해야할것은 기존의 배열을 삭제하는것이므로 그 배열로 for
문을 돌리면 안된다.
append
: 원소 마지막에 추가a = [1, 2, 3, 4, 5]
a.append(6)
a # [1, 2, 3, 4, 5, 6]
insert
: 원하는 위치에 요소 삽입리스트.insert(입력할 index, 값)
a = [1, 2, 3]
a.insert(1, 5)
a # [1, 5, 2, 3]
+
연산자로 더하기m = [2, 5, 7]
n = [3, 5, 9]
k = m + n
k # [2, 5, 7, 3, 5, 9]
k += [11, 13]
k # [2, 5, 7, 3, 5, 9, 11, 13]
extended
메서드 : 리스트.extended(추가할리스트)
a = [1,2,3]
a.extend([4,5,6])
a # [1, 2, 3, 4, 5, 6]
del
키워드a = [1, 2, 3, 4, 5, 6, 7]
del a[1]
a # [1, 3, 4, 5, 6, 7]
a = [1, 2, 3, 4, 5, 6, 7]
a.remove(3)
a # [1, 2, 4, 5, 6, 7]
a.remove(9)
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# ValueError: list.remove(x): x not in list