전체 글 123

6-2. 버블 정렬(Bubble sort)

버블 정렬 : 버블 정렬은 이웃한 두 요소의 대소 관계를 비교해 교환을 반복한다. 먼저 끝에 있는 두 요소 9와 8부터 시작 오름차순으로 배열을 정렬하고자 한다면 왼쪽의 값 9와 8 교환 뒤이어 2, 3번째 요소(1, 8) 비교 1은 8보다 작으므로 교환X 같은 작업을 첫 번째 요소까지 계속한 결과 이러한 일련의 과정(비교, 교환 작업)을 패스(pass)라고 하고, 요소의 개수가 n개인 배열에서는 패스를 n - 1회 수행한다. 이어 배열의 2번째 이후 요소에 대한 비교, 교환을 하는 패스를 수행하며, 첫 번째 패스보다 1회 적은 n - 2회의 패스를 수행하게 된다. 버블 정렬 프로그램 버블 정렬 알고리즘을 프로그램으로 구현 변수 i의 값을 0부터 n - 2까지 1씩 증가하며 n - ..

6-1. 정렬(Sorting)

정렬이란? 이름, 학번, 키 등 핵심 항목(key)의 대소 관계에 따라 데이터 집합을 일정한 순서로 줄지어 늘어서도록 바꾸는 작업 오름차순(ascending order) 정렬: 키 값이 작은 데이터를 앞쪽에 배치 내림차순(descending order) 정렬: 오름차순의 반대 정렬 알고리즘의 안정성 정렬 알고리즘은 안정된(stable) 알고리즘과 그렇지 않은 알고리즘으로 나눌 수 있다. 안정된 정렬: 같은 값의 키를 가진 요소의 순서가 정렬 전후에도 유지되는 것 안정되지 않은 알고리즘: 안정된 정렬의 반대 내부 정렬과 외부 정렬 하나의 배열에서 작업할 수 있는 경우에는 내부 정렬(internal sorting)을 사용, 하나의 배열에서 작업할 수 없는 경우에는 외부 정렬(external sorting)을..

리액트 - 컴포넌트의 라이프사이클 메서드

컴포넌트 라이프사이클 메서드 컴포넌트가 페이지에 렌더링되기 전 「준비과정 ~ 페이지에서 사라질 때」까지의 수명 주기 컴포넌트를 처음으로 렌더링할 때, 컴포넌트를 업데이트하기 전후로 어떤 작업을 처리해야 할 경우, 불필요한 업데이트를 방지해야 할 때 사용 라이프사이클 메서드는 클래스형 컴포넌트에서만 사용. 함수형 컴포넌트에서는 Hooks를 사용해 비슷한 작업 처리 라이프사이클 메서드의 이해 : 라이프사이클 메서드의 종류는 총 9가지로, 이 9가지 라이프사이클을 마운트, 업데이트, 언마운트 총 세 가지 카테고리로 나눈다. Will: 어떤 작업을 작동하기 전에 실행되는 메서드 Did: 작업을 작동한 후에 실행되는 메서드 이 메서드들은 컴포넌트 클래스에서 덮어 써 선언함으로써 사용가능 1)마운트(Mount) :..

Develop/React|Vue 2021.01.25

5-4. 8퀸 문제(Eight Queens Problem)

8퀸 문제란? 재귀 알고리즘에 대한 이해를 돕기 위한 예제로 자주 등장 19세기 유명한 수학자 카를 프리드리히 가우스(C. F. Gauss)가 잘못된 해답을 낸 사실로도 잘 알려진 문제 서로 공격해 잡을 수 없도록 8개의 퀸을 8 x 8 체스판에 놓으세요. *퀸은 서 있는 지점에서 체스판의 어떤 지점으로든 여덟 방향으로 직선 이동이 가능 92가지 조합의 정답 중 한 방법 퀸 배치하기 8개의 퀸을 배치하는 조합은 64 x 63 x 62 x 61 x 60 x 59 x 58 x 57 x = 178,462,987,637,760 가지 [규칙1] 각 열에 퀸을 1개만 배치한다. 8 x 8 x 8 x 8 x 8 x 8 x 8 x 8 = 16,777,216 가지 [규칙2] 각 행에 퀸을 1개만 배치한다. -> 경우의 ..

5-3. 하노이의 탑(Tower of Hanoi)

: 쌓아 놓은 원반을 최소의 횟수로 옮기기 위한 알고리즘 ・하노이의 탑 : 작은 원반이 위에, 큰 원반이 아래에 위치할 수 있도록 원반을 3개의 기둥 사이에서 옮기는 문제. 모든 원반은 크기가 다르고 처음에는 모든 원반이 이 규칙에 맞게 첫 번째 기둥에 쌓여 있다. 이 상태에서 모든 원반을 세 번째 기둥으로 최소의 횟수로 옮기면 된다. 원반은 1개씩만 옮길 수 있고 큰 원반을 작은 원반 위에 쌓을 수 없다. key. 가장 먼저 맨 아래 원반을 제외한 나머지 원반을 중간 기둥으로 옮겨야 한다. [소스코드] 1 2 3 4 5 6 7 8 9 10 11 static void move(int no, int x, int y) { if(no > 1) move(no - 1, x, 6 - x - y); System.ou..