전체 글 68

합병 정렬 / 병합 정렬(Merge Sort)

합병 정렬 / 병합 정렬 합병 정렬 / 병합 정렬(Merge Sort)은 정렬되지 않은 원소들을 하나의 원소로 분할한 다음 원소들을 정렬하면서 합병하는 알고리즘입니다. 먼저 원소들을 반복해서 분할해주면서 하나의 원소만 남을 때 까지 분할합니다. 그 다음에는 분할했던 두 원소들을 서로 합쳐주면서 정렬해줍니다. 이 과정을 반복해주면 정렬이 완료됩니다. 합병 정렬 / 병합 정렬 예시 합병 정렬 / 병합 정렬 C++ 코드 #define _CRT_SECURE_NO_WARNINGS #include #include void Partition(int left, int right, int numbers[]); void Merge(int left, int mid, int right, int numbers[]); void ..

카테고리 없음 2023.04.24

힙 정렬(Heap Sort)

힙 정렬 힙 정렬(Heap Sort)은 완전 이진 트리인 힙을 이용해서 원소들의 최댓값이나 최솟값을 쉽게 찾고 그것을 이용해서 정렬하는 알고리즘입니다. 먼저 부모 노드의 값이 자식 노드의 값보다 큰 최대 힙 구조를 만들어줍니다. 그리고 가장 큰 값을 가지고 있는 루트 노드를 힙의 마지막 노드와 교환해 주고 다시 최대 힙 구조를 만들어줍니다. 이 과정을 원소의 수 - 1번 반복하면 정렬이 완료됩니다. 힙 정렬 예시 본격적인 힙 정렬을 하기 전에 부모 노드의 값이 자식 노드의 값보다 큰 최대 힙 구조를 만들어야 합니다. 힙은 1차원 배열을 이용해서 구현할 수 있습니다. 부모 노드와 자식 노드의 인덱스를 쉽게 구하기 위해서 배열의 0번째 공간은 사용하지 않고 1번째 공간부터 사용합니다. 부모 노드 인덱스 ->..

카테고리 없음 2023.04.23

선택 정렬(Selection Sort)

선택 정렬 선택 정렬(Selection Sort)은 원소를 나머지 원소와 비교해서 가장 작은 원소를 찾고 그 원소와 자리를 교환하는 알고리즘입니다. 첫 번째 원소를 두 번째 원소부터 마지막 원소까지 차례대로 비교하면서 가장 값이 작은 원소를 찾고 첫 번째 원소와 가장 값이 작은 원소를 교환합니다. 다음에는 두 번째 원소를 세 번째 원소부터 마지막 원소까지 차례대로 비교하면서 가장 값이 작은 원소를 찾고 교환합니다. 이렇게 마지막에는 뒤에서 두 번째 원소와 첫 번째 원소를 비교하고 교환하면서 정렬이 완료됩니다. 선택 정렬 예시 선택 정렬 C++ 코드 #define _CRT_SECURE_NO_WARNINGS #include #include void Swap(int* a, int* b); int main() ..

카테고리 없음 2023.04.20

삽입 정렬(Insertion Sort)

삽입 정렬 삽입 정렬(Insertion Sort)은 모든 요소를 이미 정렬된 부분과 비교하여 적절한 위치를 찾아 삽입하는 알고리즘입니다. 두 번째 원소부터 시작해서 앞에 있는 원소와 비교하고 앞에 있는 원소가 값이 더 크다면 뒤로 옮기고 적절한 위치에 원소를 삽입합니다. 두 번째 원소는 첫 번째 원소와 비교되고 세 번째 요소는 두 번째 요소와 첫 번째 요소, 네 번째 요소는 세 번째 요소와 두 번째 요소, 첫 번째 요소 이런 식으로 마지막 요소는 나머지 모든 원소와 비교되고 적절한 위치에 삽입된 뒤 정렬이 완료됩니다. 삽입 정렬 예시 삽입 정렬 C++ 코드 #define _CRT_SECURE_NO_WARNINGS #include #include void Swap(int* a, int* b); int ma..

카테고리 없음 2023.04.20

버블 정렬(Bubble Sort)

버블 정렬 버블 정렬(Bubble Sort)은 서로 인접한 두 원소를 비교해서 교환하는 알고리즘으로, 원소가 이동하는 모습이 거품이 수면으로 올라오는 듯한 모습과 비슷하기 때문에 지어진 이름이라고 합니다. 처음에는 첫 번째 원소와 두 번째 원소를 비교하고 다음에는 두 번째 원소와 세 번째 원소, 세 번째 원소와 네 번째 원소 이런 식으로 마지막에는 끝에서 두 번째 원소와 첫 번째 원소를 비교하고 교환합니다. 이 과정을 계속해서 반복하는데 한 번 이 과정을 반복하면 가장 큰 원소가 마지막으로 이동하므로 맨 끝에 있는 원소는 정렬 과정에서 제외됩니다. 정렬해야 할 원소의 개수 - 1만큼 위 과정을 반복하면 정렬이 완료됩니다. 버블 정렬 예시 버블 정렬 C++ 코드 #define _CRT_SECURE_NO_W..

카테고리 없음 2023.04.20

Unity Button Animation 정리

Normal 노말한 상태로 마우스 커서가 버튼을 제외한 다른 모든 위치에 있을 때의 상태입니다. Highlighted 마우스 커서가 버튼 위에 놓여져 있는 상태에서 마우스 버튼을 누르지 않고 있을 때의 상태입니다. 키보드를 이용해서 버튼을 선택한 경우에는 Selected상태가 됩니다. Pressed 마우스 커서가 버튼 위에 놓여져 있는 상태에서 마우스 버튼을 누르고 계속 유지하고 있을 때의 상태입니다. 키보드를 이용해서 버튼을 누르고 계속 유지한다고 해도 마우스와는 다르게 잠깐동안만 이 상태가 유지됩니다. Selected 마우스 커서가 버튼 위에 놓여져 있는 상태에서 마우스 버튼을 눌렀다 놓은 상태입니다. 이 상태에서는 커서를 움직여도 상태는 변하지 않습니다. 키보드를 이용해서 버튼을 선택한 상태입니다...

Unity 2023.03.19

Unity 2D 환경에서 특정 오브젝트 방향으로 회전

3D 환경에서는 LookAt 함수나 RotateTowards 함수를 이용해서 특정 오브젝트 방향으로 회전할 수 있지만 이 함수들은 2D 환경에서는 작동하지 않습니다. 아래의 코드는 2D 환경에서 특정 오브젝트 방향으로 회전하는 코드입니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class LookAt2DSource : MonoBehaviour { public GameObject destination; float angle; void Update() { angle = Mathf.Atan2(destination.transform.position.y - transform.position.y, de..

Unity 2023.01.19

drozer 설치 및 액티비티 호출

drozer 설치 drozer는 안드로이드 보안 테스트를 위한 도구입니다. 이제 이것을 설치해보겠습니다. 먼저 아래 링크에 접속해줍니다. https://labs.withsecure.com/tools/drozer Drozer Comprehensive security and attack framework for Android. labs.withsecure.com 들어가서 페이지를 아래로 내리다 보면 아래와 같은 부분이 나오는데 drozer (Python .whl)와 drozer (Agent .apk only)를 다운로드해줍니다. 터미널을 열고 아래의 명령어를 입력해줍니다. cd Downloads conda activate py2 pip install drozer-2.4.4-py2-none-any.whl pi..

Android 2022.11.22

Burp Suite 설치 및 HTTP 요청 패킷 가로채고 값 변조하기

Burp Suite 설치 먼저 필요한 도구인 Burp Suite를 설치해주겠습니다. 아래의 링크에 접속해줍니다. https://portswigger.net/burp/communitydownload Download Burp Suite Community Edition - PortSwigger Burp Suite Community Edition is PortSwigger's essential manual toolkit for learning about web security testing. Free download. portswigger.net Go straight to downloads 버튼을 눌러줍니다. 에디션은 무료인 Burp Suite Community Edition으로 하고 운영체제는 칼리 리눅스에서..

Android 2022.11.21