목록전체 글 (104)
컴퓨터공학 💻 도서관📚
계수 정렬은 가장 작은 데이터부터 가장 큰 데이터까지의 모든 범위를 포함할 수 있는 크기의 배열을 만들어야 하기 때문에 상대적으로 공간 복잡도가 높지만, 조건만 맞다면 다른 방법보다 더 효율적인 알고리즘이다 계수 정렬은 데이터를 정수 형태로 표현할 수 있을 때 사용 가능하다. 계수 정렬은 가장 작은 데이터부터 가장 큰 데이터까지의 범위가 모두 담길 수 있는 크기의 리스트를 선언해야 한다 계수 정렬 코드에서 중첩 for문을 보면 바깥쪽 for문이 K 번 돌아가고 안쪽 for문은 수행 횟수가 N 번이므로 시간복잡도는 O(K + N) 이다 계수정렬은 동일한 값을 가지는 데이터가 여러 개 나올 때 효과적이다.
원소가 1개인 경우에는 그대로 종료한다 1. 리스트 슬라이싱과 2. 리스트 컴프리헨션을 활용
comprehension 영단어 뜻은 이해, 이해력, 포용력 이다.List Comprehension 을 이용하면 리스트의 모든 요소를 단 한 줄로 관여할 수 있다 표현식 + for문 형식# case 1result = [int(input()) for i in range()]# case 2result = [list(map(int, input().split())) for i in range(n)]# case 3result = [[0]*n for i in range(n)] 표현식 + for문 + 조건문 형식# case 1n = 10result = [i for i in range(n) if i % 2 == 0]print(result)# 출력 결과 : [0, 2, 4, 6, 8]# case 2left_sid..
data = ['서울', '부산', '대구', '인천', '강릉'] city = data[0:3]print(city)# 출력 결과 : ['서울', '부산', '대구'] city = data[2:5]print(city)# 출력 결과 : ['대구', '인천', '강릉'] city = data[3:]print(city)# 출력 결과 : ['인천', '강릉'] city = data[:2]print(city)# 출력 결과 : ['서울', '부산'] city = data[2:-1] # data[2:4] 와 같다, 마지막은 열린구간이니까 마지막 앞에까지 출력print(city)# 출력 결과 : ['대구', '인천']
퀵 정렬 표준 라이브러리를 이용하는 경우에는 기본적으로 NlogN 을 항상 보장한다 퀵 정렬 동작 예시 아주 중요!!! : 위치가 엇갈릴 때는 '피벗'과 '작은 데이터'의 위치를 서로 변경한다. 퀵 정렬의 시간 복잡도 퀵 정렬은 이미 정렬된 배열에서 최악의 시간 복잡도를 가진다(우측에서부터 0보다 작은 데이터가 없기 때문이다)그래서 결국 위치가 엇갈려서 0이 자기 자신과 위치를 바꾸는 상황이 된다그리고 0과 나머지 숫자들의 묶음으로 분할이 된다그 후 계속 가장 작은 수와 나머지 숫자들의 묶음으로 분할이 되서 시간 복잡도가 O(N^^2) 이다.
선택 정렬 처리되지 않은 데이터 중에서 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸는 것을 반복합니다 내가 쓰던 선택 정렬과 본질은 같지만 형태만 다른 코드본질 : 0번째 인덱스에 가장 작은 수를 넣기여기선 가장 작은 수가 있는 인덱스 번호를 찾는 방식이다 파이썬에서 변수 스와프 하는 방법array[i], array[min] = array[min], array[i] c++ 표준 라이브러리에서 제공하는 swap 함수 삽입 정렬 처리되지 않은 데이터를 하니씩 골라 적절한 위치에 삽입한다 (데이터를 하나씩 확인하면서 이 데이터가 어느 위치에 들어가는게 맞는지 매번 계산한다) 선택정렬에 비해 구현나이도가 높은 편이지만, 일반적으로 더 효율적으로 동작한다 i 번째 요소가 좌측..
range 함수 : range(start : stop : step) range 함수 예시 1for i in range(3): print(i) # 출력 결과 :# 0# 1# 2 range 함수 예시 2for i in range(5, 8): # range(start, stop) print(i, end=' ') # 출력 결과 : 5 6 7 range 함수 예시 3for i in range(0, 6, 2): print(i, end=' ') # 출력 결과 : 0 2 4range 함수 예시 4# range 함수 역순 출력for i in range(3, 0, -1): print(i, end=' ') # 출력 결과 : 3 2 1range 함수 예시 5# ran..