공부 일지

Q1. 물체를 위로 날려 버리기 void Start() { this.GetComponent().AddForce(new Vector2(0, 800f)); } Q2. 물체가 점점 커지게 하기 using System.Collections; using System.Collections.Generic; using UnityEngine; public class NewBehaviourScript : MonoBehaviour { float scaleFactor = 1.005f; float scaleSpeed = 0.01f; float maxScale = 8.0f; // Start is called before the first frame update void Start() { //Q1: this.GetComponent..
0x00 Counting sort 그냥 각 수의 등장 횟수만 세어 정렬하면 된다. 정렬 알고리즘 중에서 가장 쉽다. 하지만 이 알고리즘은 만능이 아니다. 일단 카운팅 소트를 쓰려고 하면 각 수의 등장 횟수를 저장해야 한다. 그리고 등장 횟수를 세는 방법은 미리 큰 테이블을 만들어두고 수에 대응되는 원소의 값을 1 증가시켜서 처리하는 것이다. 만약 수가 0에서 9 사이라고 한다면 freq[10] 배열을 선언해서 처리할 수 있고 수가 0에서 9999사이라고 한다면 freq[10000] 배열을 선언해서 처리할 수 있다. 만약 수의 범위가 0에서 999,999,999 까지라고 하면 크기가 10억인 배열이 필요하므로 Counting Sort는 수의 범위가 대략 1000만 이하일때에만 쓰인다. 시간복잡도는 O(N+..
0x00 기초 정렬 정렬의 종류는 약 30개로 매우 많다. 여기서는 모든 정렬 알고리즘을 다 다루지는 않을거고 대표적인 몇 개만 다룰것이다. 크기순으로 정렬하려고 한다면 다음과 같이 생각해서 정렬할 수 있을것이다. 선택 정렬 버블 정렬 앞에서부터 인접한 두 원소를 보면서 앞의 원소가 뒤의 원소보다 클 경우 자리를 바꾸는 것을 반복하면 자연스럽게 제일 큰 것부터 오른쪽에 쌓이게 된다. 위에서 소개된 선택 정렬과 버블 정렬 외에 삽입 정렬이라는 것도 있는데 이들은 모두 O(N^2)에 동작하는 대표적인 정렬 방법이다. 하지만 N이 커질수록 이 방법들은 비효율적일 것이다. 그래서 정렬을 더 빠르게 수행할 수 있는 알고리즘들을 알아보겠다. 0x01 Merge Sort Merge Sort는 재귀적으로 수열을 나눠 ..
0x00 정의와 성질 트리 : 무방향이면서 사이클이 없는 연결 그래프(Undirected Acyclic Connected Graph) 0x01 BFS, DFS BFS DFS 0x02 이진 트리의 순회 레벨 순회 레벨순회는 BFS랑 같다고 보면 된다. 위에서부터 흝고 내려가는 순서이다. 위 예시 순서로는 1>2>3>4>5>6>7>8 이다. 전위 순회 순서 현재 정점을 방문한다. 왼쪽 서브 트리를 전위 순회한다. 오른쪽 서브 트리를 전위순회한다. 중위 순회 순서 왼쪽 서브 트리를 중위 순회한다. 현재 정점을 방문한다. 오른쪽 서브 트리를 중위 순회한다. 중위 순회는 왼쪽 서브트리 > 나 > 오른쪽 서브트리 순으로 처리하는 순회 방법이다. 후위 순회 순서 왼쪽 서브 트리를 후위 순회한다. 오른쪽 서브 트리를 ..
0x00 정의와 표현법 정의 그래프란 정점과 간선으로 이루어진 자료구조를 말한다. 차수는 각 정점에 대해서 간선으로 연결된 이웃한 정점의 개수이다. 그래프는 네비게이션에서 최단 경로 찾기, 혹은 구글 같은 검색엔진에서 랭킹 정하기와 같이 뭔가 원소 사이의 연결 관계를 설정해야 하는 상황에서 유용하게 활용될 수 있는 자료구조이다. 간선 그래프의 간선에는 방향성이 있을 수 있다. 왼쪽처럼 방향성이 없다면 무방향 그래프라고 하고 방향성이 있다면 방향 그래프라고 한다. 간선에 방향성이 있다는건 마치 일방통행 도로를 생각하면 된다. 방향 그래프에서도 차수라는 개념이 있는데 자기에게서 나가는 간선의 개수는 outdegree(차출 차수)이고 들어오는 개수는 indegree(진입 차수)이다. 그래프의 종류 사이클이란 ..
0x00 정의와 성질 트리는 위 그림처럼 계층 구조를 가지고 있고, 제일 꼭대기를 제외하고 각 동그라미들은 위로 딱 1개와 연결되어있는 구조 각 원소는 정점 or 노드 라고 부름 트리의 제일 꼭대기 정점을 루트(Root)라고 부름 제일 말단에서 아래로 뻗은게 없는 정점을 리프(Leaf)라고 부름 정점과 정점을 연결하는 선을 간선이라고 부름 간선으로 연결된 위 아래의 관계를 부모 자식 관계라고 부름(ex.3번 정점과 7,8번 정점은 부모 자식 관계) 어떤 한 정점에 대해 그 밑에 있는 정점과 간선만을 모은 트리를 서브트리라고 함 트리의 높이는 위 아래로 뻗어있는 정도를 나타냄 이진 트리,,, 각 노드의 자식이 2개 이하인 트리를 말한다. 자식이 2개 이하이기 때문에 자식을 왼쪽 자식과 오른쪽 자식으로 구분..
0x00 알고리즘 설명 자료구조로 위 트리는 상태공간트리라고 부른다. 0x01 연습 문제 1 - N과 M BOJ 15649번: N과 M(1) 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net #include using namespace std; int n,m; int arr[10]; bool isused[10]; void func(int k){ // 현재 k개까지 수를 택했음. if(k == m){ // m개를 모두 택했으면 for(int i = 0; i < m; i++) cout m; func(0); } 0x..
0x00 알고리즘 설명 0x01 연습문제 1 - 거듭제곱 BOJ 1629번: 곱셈 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net 첫 번째는, 수의 범위이다.제한사항을 보면 입력이 2,147,483,647까지다. 입력부터 20억이 넘어가기 때문에 20억^20억long long int 자료형을 아득히 넘어간다. 그렇기 때문에 지수를 한 번에 곱해서 구해서는 안된다.자료형을 넘지 않도록 지수를 분할하여 곱하여야 한다. 두 번째는 시간복잡도이다.그럼 한 번씩 곱할 때마다 나머지를 구하면 되지 않을까? 이러면 시간복잡도가 O(n)이 되는데,해당 문제의 시간제한이 0.5초로 시간초과..
Roble
'공부 일지' 카테고리의 글 목록