오늘의 문제
https://www.acmicpc.net/problem/2750
포인트 쳌쳌
- 선택, 삽입, 버블 정렬과 같이 단순한 알고리즘 사용해보기
- 이중 for문을 사용했다.
최근에 정렬에 관해서 정리를 하고 있기 때문에 간단한 문제지만
각각의 정렬 알고리즘 정석대로 문제를 풀어보려고 했고, 선택, 삽입, 버블 정렬 세 가지로 구현하여 제출해보았다.
선택 정렬 풀이 코드
선택정렬개념정리 포스팅을 참고했다.
#1.선택정렬
n = int(input())
num = []
#리스트 만들기
for i in range(n):
num.append(int(input()))
idx = 0
for i in range(len(num)):
min_num = 99999
for j in range(i, len(num)):
#최소값 비교
if min_num > num[j]:
min_num = num[j]
idx = j
temp = num[i]
num[i] = num[idx]
num[idx] = temp
#결과 출력
for i in num:
print(i)
삽입 정렬 풀이 코드
삽입정렬개념정리 포스팅을 참고했다.
#2.삽입정렬
n = int(input())
num = []
#리스트 만들기
for i in range(n):
num.append(int(input()))
for i in range(len(num)-1):
j = i
while j >= 0 and num[j] > num[j+1]:
temp = num[j]
num[j] = num[j+1]
num[j+1] = temp
j -=1
#결과 출력
for i in num:
print(i)
버블 정렬 풀이 코드
버블정렬개념정리 포스팅을 참고했다.
#3.버블정렬
n = int(input())
num = []
#리스트 만들기
for i in range(n):
num.append(int(input()))
for i in range(len(num)):
for j in range(len(num)-i-1):
if num[j] > num[j+1]:
temp = num[j]
num[j] = num[j+1]
num[j+1] = temp
#결과 출력
for i in num:
print(i)
세가지 코드 채점 결과
채점 결과 소요되는 시간을 비교해봤을 때 삽입정렬, 버블정렬, 선택정렬 순으로 빨랐다.
윗쪽부터 버블정렬, 삽입정렬, 선택정렬이다.