코테 공부
-
프로그래머스 - 단어 변환코테 공부 2022. 11. 7. 15:58
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Input begin 단어, target 단어가 주어짐. 단어의 집합 words가 주어짐. 알파벳 소문자로만 이루어짐 각 단어의 길이는 같으며 모두 3 이상 10 이하 Output 최소 몇 단계의 과정을 거쳐서 begin을 target으로 변환할 수 있는지 return 한 번에 한 개의 알파벳만 바꿀 수 있음. words에 있는 단어로만 변환 가능. 입력과 출력 예 begintarg..
-
힙(heap) 알고리즘코테 공부 2022. 9. 28. 16:00
힙(heap) 완전 이진 트리 데이터 내에서 최솟값 및 최댓값을 찾아내는 연산을 빠르게 하기 위해 고안된 알고리즘 우선순위 큐를 위하여 만들어진 자료구조 (우선순위 큐?) 중복 허용 반정렬 상태 (느슨한 정렬 상태)를 유지함 (부모노드의 값이 자식노드의 값보다 항상 크다/작다) 힙의 종류 가장 높은(혹은 가장 낮은) 우선순위를 가지는 노드가 항상 뿌리(root)노드에 오게 된다. 이를 응용하여 우선순위 큐와 같은 추상적 자료형을 구현 복잡도 시간복잡도 = O(log2 n) 삽입, 삭제의 시간복잡도는 O(1)이나, heapify 하는 과정이 O(log2 n) heapify 과정에서 최대로 많은 연산 횟수를 한다면, 트리의 높이(레벨) 만큼 연산하기 때문에 O(log2 n) References https:/..
-
삽입정렬코테 공부 2020. 6. 9. 11:22
정렬되지 않은 숫자들을 하나씩 빼서 정렬되어 있는 숫자 사이의 올바른 위치에 삽입하는 정렬 방법 맨 앞에 있는 숫자를 정렬된 숫자라고 설정 앞에서부터(작은수부터) 정렬하는 방법이라고 볼 수 있다. import numpy as np def Insert_Sort(a): a = list(a) for i in range(1, len(a)): for j in range(i): if a[j]>a[i]: a.insert(j, a.pop(i)) break return np.array(a) import numpy as np # 앞에서부터 비교 def Insert_Sort2(a): a = list(a) for i in range(1, len(a)): k=1 for j in range(i): if a[..
-
버블정렬코테 공부 2020. 6. 9. 09:54
서로 인접한 두 요소의 크기를 서로 비교하여 교환 맨 앞에서부터 탐색해 가장 큰 수를 맨 뒤로 보낸다. 다시 맨 앞에서부터 탐색해 그 다음으로 큰 수를 뒤에서 2번째로 보낸다. 위와같은 방법을 반복하여 정렬한다. 큰수부터(뒤에서부터) 정렬하는 방법이라고 볼 수 있다. 안정성이 있고, 비효율적 속도가 느림 def Bubble_Sort(a): N=len(a) for i in range(1, N): for j in range(N-i): if a[j]>a[j+1]: a[j], a[j+1] = a[j+1], a[j] return a import numpy as np N = int(input('크기를 입력하세요:')) a = np.random.randint(1000, size=N..
-
이진 탐색코테 공부 2020. 6. 2. 19:16
이진탐색이란? 정렬된 데이터를 좌우 둘로 나눠서 원하는 값의 탐색범위를 좁혀가며 찾는 방법 -> 소주병 뚜껑 숫자맞출 때 쓰는 방법과 비슷하다. 준비1 아래의 리스트서 중앙값을 찾으시오. a = [ 1, 7, 11, 12, 14, 23, 33, 47, 51, 64, 67, 77, 139, 672, 871 ] import numpy as np a = [ 1, 7, 11, 12, 14, 23, 33, 47, 51, 64, 67, 77, 139, 672, 871 ] a = np.array(a) print(np.median(a)) 준비2 위 리스트에서 첫번째 숫자부터 중앙값에 해당하는 숫자까지만 검색하시오. a[:int(a.shape[0]/2+1)] a[a num = int(input('찾을 숫자를 입력하세요:..