Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Algorithm
- Basic
- parameter
- w3school
- 프로그래밍
- github
- String
- Material
- DP
- Tutorial
- 재귀
- 오류
- dfs
- W3Schools
- dynamic
- 시작해요 언리얼 2022
- 파이썬
- loop
- Unreal Engine 5
- Class
- Unity
- c++
- guide
- 문제풀이
- UE5
- python
- 기초
- Programming
- 백준
- C#
Archives
- Today
- Total
행복한 개구리
백준 21.12.30. 2750번 - 수 정렬하기 본문
N = int(input())
arr = set()
for _ in range(N):
arr.add(int(input()))
arr = list(arr)
arr.sort()
for i in arr:
print(i)
- set의 요소는 중첩되지 않는다는 성질을 이용하여 풀었습니다.
거품정렬(Bubble Sort)
N = int(input())
arr = []
for _ in range(N):
arr.append(int(input()))
for i in range(len(arr)):
for j in range(len(arr)):
if arr[i] < arr[j]:
arr[i], arr[j] = arr[j], arr[i]
for i in arr:
print(i)
- 중첩반복문을 통해 배열의 처음부터 끝까지 모두 탐색합니다.
- 지정한 수( arr[i] )와 배열안의 다른 수( arr[j] )를 모두 비교합니다.
- 만약 arr[i]가 arr[j]보다 작다면 arr[i]의 자리는 arr[j]로 대체되고 arr[j]는 arr[i]로 대체됩니다.
- 배열안에 존재하는 i+1 개수 만큼의 가장 큰 값들이 0인덱스부터 오름차순으로 정렬됩니다.
▲ 리스트의 변화
삽입정렬(Insertion Sort)
N = int(input())
arr = []
for _ in range(N):
arr.append(int(input()))
n = 0
for i in range(1, len(arr)):
while (i > 0) & (arr[i] < arr[i-1]):
arr[i], arr[i-1] = arr[i-1], arr[i]
i -= 1
for i in arr:
print(i)
- for, while 반복문을 중첩으로 사용합니다.
- for문으로 arr에서의 지정한 기존 인덱스(i)에 해당하는 값을 이전 인덱스(i-1)의 값과 비교해줍니다.
- 만약 이전 인덱스(i-1)의 값이 크다면 두 인덱스의 값을 서로 치환하여 오름차순에 맞게끔 정렬해줍니다.
- 정렬이 1회 끝났다면 i를 -1하여 내가 치환시킨 이전 인덱스(i-1)의 값이 그 이전인덱스의 값(i-2)과 비교하여 정렬해줍니다.
- 그리고 i가 0이 된다면 i-1인덱스는 존재하지 않으므로 오류가 나기때문에 while문의 조건에 i>0이라는 조건이c 추가적으로 달려있습니다.
- 이를 반복한다면 오름차순으로 정렬된 리스트가 반환됩니다.
'Algorithm > BaekJoon' 카테고리의 다른 글
백준 22.01.27. 11650번 - 좌표 정렬하기 (0) | 2022.01.27 |
---|---|
백준 22.01.26. 2108번 - 통계학 (0) | 2022.01.26 |
백준 21.12.29. 1436번 - 영화감독 숌 (0) | 2021.12.29 |
백준 21.12.28. 1018번 - 체스판 다시 칠하기 (0) | 2021.12.29 |
백준 21.12.21. 7568번 - 덩치 (0) | 2021.12.21 |