[SW사관학교 정글/8일차 TIL] 백준 2750 : 수 정렬하기 1

김승덕·2022년 9월 26일
0

SW사관학교 정글 5기

목록 보기
11/150
post-thumbnail

수 정렬하기

문제

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]
  • 리스트의 remove 메서드에 의한 삭제
    • list.remove(찾을 아이템)
    • 찾을 아이템이 없으면 ValueError 발생
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

참고 자료

점프 투 파이썬

profile
오히려 좋아 😎

0개의 댓글