파이썬 4

[백준][Python] 10804번: 카드 역배치

https://www.acmicpc.net/problem/10804 10804번: 카드 역배치 1부터 20까지 오름차순으로 놓인 카드들에 대해, 입력으로 주어진 10개의 구간 순서대로 뒤집는 작업을 했을 때 마지막 카드들의 배치를 한 줄에 출력한다. www.acmicpc.net 리스트를 역순으로 정렬하는 건 파이썬이 쉽게 떠올라서 파이썬으로 풀었다. 근데 이상한 게 있다.. 1 2 3 4 5 6 7 8 9 10 11 12 list = [] for i in range(1,21): list.append(i) for i in range(10): a, b = map(int, input().split()) temp = list[a-1:b] temp = reversed(temp) list[a-1:b] = temp ..

[정렬 알고리즘][파이썬] 삽입 정렬

삽입 정렬(insertion sort)은 수열의 왼쪽부터 순서대로 정렬하는 방식입니다. 작업하다 보면 좌측에는 정렬이 끝난 숫자가 오게 되고 우측에는 아직 확인하지 않은 숫자가 남게 됩니다. 우측의 미탐색 영역에서 숫자를 하나 꺼내서 정렬이 끝난 영역의 적절한 위치에 삽입해 나가는 방식입니다. -책 알고리즘 도감 위의 막대기들을 삽입 정렬을 사용해 오름차순으로 정렬해보겠습니다. 1. 처음에는 왼쪽 끝의 숫자(20)를 정렬이 끝났다고 간주합니다. 2. 아직 정렬되지 않은 숫자 중에서 왼쪽 끝에 있는 숫자(10)을 꺼내서 왼쪽에 정렬된 숫자와 비교해서 꺼낸 숫자가 더 작으면 자리를 바꿉니다. 20 > 10 이므로 20과 자리를 바꿉니다. 이제 숫자 10과 20은 정렬이 된 것으로 간주합니다. 따라서 정렬되지..

[정렬 알고리즘][파이썬] 선택 정렬

선택 정렬(selection sort)에서는 '수열 중에서 최소값을 검색해서 왼쪽 끝에 있는 숫자와 교체하는 작업을 반복합니다. 수열 중에서 최소값을 찾을 때는 선형 탐색을 사용합니다. -책 알고리즘 도감 위와 같이 서있는 막대기들을 선택 정렬을 사용해 오름차순으로 정렬해보겠습니다. 1. 선형 탐색을해서 최소값을 찾습니다.(여기서는 10) 그리고 왼쪽 끝에 있는 20과 자리를 바꿉니다. (만약, 최소값이 이미 왼쪽끝에 있다면 그대로 둡니다.) 그리고 이제 제일 왼쪽에 있는 10은 신경쓰지 않습니다. 2. 이제 남은 4개의 숫자중에서 최소값을 찾아서 20과 자리를 바꿉니다. 여기서는 4개의 숫자중 최소값이 20이므로 그대로 둡니다. 그리고 이제 정렬된 20도 신경쓰지 않습니다. 3. 이제 남은 3개의 숫자..

[정렬 알고리즘][파이썬] 버블 정렬

버블 정렬(bubble sort)은 '오른쪽부터 왼쪽 방향으로 인접한 두 개의 숫자를 비교해서 교환하는 작업을 반복합니다.' 오른쪽부터 왼쪽으로 숫자를 옮겨가는 모양이 물속에서 거품이 올라오는 모양과 비슷하다고 해서 버블이라고 합니다. -책 알고리즘 도감 위의 그림처럼 생긴 막대기들을 버블 정렬을 이용해 오름차순으로 정렬한다고 해봅시다. 오른쪽부터 왼쪽 방향으로 인접한 두 개의 숫자를 비교해서 교환하는 작업을 반복한다고 했죠? 오른쪽부터 좌우 숫자를 비교해서 오른쪽 숫자가 작으면 위치를 바꿔줍니다. 1. 40과 50을 비교한다. 40이 더 작으므로 50과 위치를 변경한다. 2. 30과 40을 비교한다. 30이 더 작으므로 위치를 변경하지 않는다. 3. 10과 30을 비교한다. 10이 더 작으므로 위치를 ..