cs

· CS
삽입 정렬 삽입 정렬은 전체에서 하나씩 올바른 위치에 "삽입" 하는 방식입니다! 선택 정렬은 현재 데이터의 상태와 상관없이 항상 비교하고 위치를 바꾸지만, 삽입 정렬은 필요할 때만 위치를 변경하므로 더 효율적인 방식입니다! 이미 키 순으로 정렬된 사람들이 일렬로 쭉~ 서 있는데, 다음 원소가 그 정렬된 사람들 사이를 비집고 들어가면서 아 여기가 내 자리구나! 하면서 삽입하며 정렬하는 방식입니다. 아래 [5, 3, 8, 1, 2] 배열을 삽입 정렬하는 그림을 보시면 이해해보겠습니다. 삽입 정렬의 진행순서를 코드로 좀 더 자세히 알아보겠습니다 [4, 6, 2, 9, 1] # 정렬되지 않은 배열 1단계 : [4, 6, 2, 9, 1] 4는 현재 정렬되어 있는 부대원입니다. 그럼 이제 새로운 신병인 6을 받습니..
· CS
선택 정렬 선택정렬은 말 그대로 선택해서 정렬한다는 것입니다. 예를 들면, 초등학교 키번호르를 생각해보시면 됩니다. 학생들을 줄을 세우고 한번 쭉 둘러보며 키가 가장 작은 학생을 찾습니다. 가장 키가 작은 학생을 찾아 맨 앞으로 세우고 다시 줄을 쭉 둘러봅니다. 두 번째로 키가 작은 학생을 찾아 두 번째에 세우고 줄을 다시 둘러보며 세번째로 작은 학생을 찾습니다. 이러한 반복으로 정렬하는 방식이 선택정렬입니다. 선택 정렬의 진행순서를 좀 더 자세히 살펴보겠습니다. [4, 6, 2, 9, 1] # 정렬되지 않은 배열 1단계 : [4, 6, 2, 9, 1] 4와 6과 2와 9와 1을 차례차례 비교합니다. 그 중 가장 작은 1과 맨 앞 자리인 4를 교체합니다! [1, 6, 2, 9, 4] 이렇게요! 자, 그러..
· CS
버블정렬 가장 쉽고 직관적인 정렬기법입니다. 버블정렬은 첫 번째와 두 번째 자료를, 두 번째 자료와 세 번째 자료를, 세 번째와 네 번째를,... 이런 식으로 [마지막 -1]번째 자료와 마지막 자료를 비교하여 교환하면서 자료를 정렬하는 방식입니다. 작은 숫자, 큰 숫자 순서로 있으면 내버려두고 큰 숫자, 작은 숫자 순서로 있으면 둘의 위치를 변경하는 것입니다. 예시를 보겠습니다. 버블정렬이 어떤 순서로 진행되는지 좀 더 자세히 살펴보겠습니다. [4, 6, 2, 9, 1] # 정렬되지 않은 배열 1단계 : [4, 6, 2, 9, 1] 4와 6을 비교합니다! 4 2 이므로 둘을 변경합니다! [4, 2, 6, 9..
#4 배열요소로 큰 수 만들기 Q. nums 배열에서 (nums[i]-1*nums[j]-1)식으로 만들 수 있는 가장 큰 수를 만들어주세요! 정답 코드 import heapq import sys class Solution: def maxProduct(self, nums): a,b = heapq.nlargest(2, nums)[0] -1 , heapq.nlargest(2, nums)[1] -1 return a*b nums = sys.input().readline sol = Solution() result = sol.maxProduct(nums) print(result) 풀이 과정! 이전 포스팅에서 배웠던 heapq.nlargest()함수를 통해 문제를 해결해봤습니다. 처음보시는 분이나, 다시 정보를 찾아..
#3 K번째 큰 요소 Q. 숫자로 구성된 배열 nums와 integer k가 주어집니다. nums 배열에서 k번째로 큰 요소를 찾아주세요 (sort을 사용하지 않고 구현해주세요) 정답 코드 import heapq class Solution: def findKthLargest(self, nums, k) : return heapq.nlargest(k, nums)[-1] nums = [1, 1, 1, 2, 2, 3] k = 2 sol = Solution() result = sol.findKthLargest(nums, k) print(result) # 2 nums배열에서 2번째(k)로 큰 요소 반환! import heapq 풀이 과정! 파이썬은 heapq 모듈을 통해서 힙구조의 데이터 편집에 용이합니다. 다양..
· CS
힙이란? 힙(Heap)은 데이터에서 최대값과 최솟값을 빠르게 찾기 위해 고안된 완전 이진 트리 (Complete Binary Tree) 입니다. 이진 트리(Binary Tree)는 트리 중에서도 각 노드가 최대 2개의 자식노드를 가질 때 이진트리(Binary Tree)라고 합니다.  항상 최대/최소의 값들이 필요한 연산이 있다면 힙을 사용하면 되겠습니다. Python3의 경우에는 heapq 라던가 힙 구조화 시켜주는 heapify 함수가 있지만 JavaScript는 그런 함수가 없습니다.. 따로 구현을 해서 사용을 해야한답니다 힙은 항상 큰 값이 상위레벨이 있으며 작은 값이 하위 레벨에 있도록 하는 자료구조입니다. 다시 말하면 부모 노드의 값이 자식 노드의 값보다 항상 커야 합니다. 가장 큰 값은 모든..
장찬영
'cs' 태그의 글 목록