반응형

문제

https://www.acmicpc.net/problem/2750



알고리즘의 기본이라고 할 수 있는 정렬문제로 들어왔다.

이번문제는 굉장히 좁은 범위의 숫자를 정렬하는 것이라 어떤 알고리즘을 써도 무방할거

 같다.누구나 제일 간단하게 생각할수 있는 bubble sort과 selection sort를 사용해 보겠다.

버블 정렬이란 서로 인접한 두원소를 검사하여 정렬하는 알고리즘이다.

1회전을 하고나면 마지막 원소는 정렬이 되어있다.



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
30
31
32
33
34
35
36
37
38
39
40
41
import sys
 
n=int(sys.stdin.readline())
num_list=[]
while(n>0):#인자를 받아서 리시트에 담는다
    n-=1
    num_list.append(int(sys.stdin.readline()))
 
#선택정렬
#과정
# 주어진 배열 중에서 최솟값을 찾는다.
# 그 값을 맨 앞에 위치한 값과 교체한다
# 맨 처음 위치를 뺀 나머지 리스트를 같은 방법으로 교체한다.
# 하나의 원소만 남을 때까지 위의 1~3 과정을 반복한다.
for i in range(len(num_list)-1):#한사이클이 끝나면 제일 앞의 원소가 리스트의 최솟값과 바뀜
    for j in range(i,len(num_list)):
        if num_list[i]>num_list[j]:
            tmp=num_list[i]
            num_list[i]=num_list[j]
            num_list[j]=tmp
 
for i in num_list:
    print(i)
 
########################################################################################
#버블정렬
#바로 옆의 인자와 비교하여 옆의 인자가 작다면 바꿔준다.
#마지막 인자까지 반복하면 마지막 인자는 최댓값이 된다.
#마지막 인자를 제외한 나머지 인자들을 같은 방법으로 교체해준다.
#하나의 원소만 남을때 까지 반복해준다.
for i in range(len(num_list)-1,0,-1):#한사이클이 끝나고 나면 가장큰수가 제일뒤로 감 다음사이클은 마지막 전까지 수행
    for j in range(i):
        if num_list[j]>num_list[j+1]:
            tmp=num_list[j]
            num_list[j]=num_list[j+1]
            num_list[j+1]=tmp
 
 
 
for i in num_list:
    print(i)

cs





반응형

'알고리즘(python) > 정렬' 카테고리의 다른 글

[Python]정렬 백준 11650  (0) 2020.01.01
[Python]정렬 백준 1427  (0) 2020.01.01
[Python]정렬 백준 2108  (0) 2019.12.27
[Python]정렬 백준 10989  (0) 2019.12.25
[Python]정렬 백준 2751  (0) 2019.12.24
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기