일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 유한상태기계
- UI 자동화
- unreal
- fsm
- lower_bound
- 운영체제
- upper_bound
- unity
- 이분탐색
- 너비우선탐색
- 구현
- 인프런
- DFS
- 이득우
- 언리얼
- 웅진씽크빅
- 프로그래머스
- 안드로이드
- 백준
- 시리얼라이제이션
- 개발일지
- 재귀
- 알고리즘
- 유니티
- c++
- 게임개발
- 게임개발공모전
- binary_search
- BFS
- c#
- Today
- Total
목록알고리즘 (7)
초고교급 희망
재귀 : 하나의 함수에서 자기 자신을 다시 호출해 작업을 수행하는 알고리즘 어떤 문제를 재귀로 푼다는 것은 곧 귀납적인 방식으로 문제를 해결하겠다는 것. 재귀 함수의 조건 특정 입력에 대해서는 자기 자신을 호출하지 않고 종료되어야 함(Base condition) 모든 입력은 base condition으로 수렴해야 함 -> 이 두 조건 중 어느 하나라도 지켜지지 않는다면 재귀 함수는 결과를 내지 못하고 무한히 들어가다가 런타임 에러가 발생하게 된다. 1. 재귀에서는 함수를 명확하게 정의해야 한다. 함수의 인자로 어떤 것을 받고 어디까지 계산한 후 자기 자신에게 넘겨줄지 명확하게 정해야 함. 모든 재귀 함수는 반복문만으로 동일한 동작을 하는 함수를 만들 수 있음. 재귀는 반복문으로 구현했을 때에 비해 코드가..
#include #include #include using namespace std; bool map[101][101]; int n, k, l; // 보드 크기, 사과 개수, 방향 변환 횟수 int dx[4] = { 0,1,0,-1 }; int dy[4] = { 1,0,-1,0 }; bool apple[101][101]; int dir[10001]; int d; int main() { // 뱀은 큐. 뱀의 길이가 선입 선출 queue snake; cin >> n >> k; for (int i = 0; i > x >> y; apple[x][y] = true; } cin >> l; for (int i = 0; i < l; i++) { int x; string ..
#include #include using namespace std; int answer = 0; void dfs(vector& numbers, int sum, int cnt, int index) { if(cnt == 3) { if(sum == 0) { answer++; } return; } for(int i = index; i < numbers.size(); i++) { dfs(numbers, sum + numbers[i], cnt + 1, i + 1); } } int solution(vector number) { for(int i = 0; i < number.size(); i++) { dfs(number, number[i], 1, i + 1); } return answer; } DFS 연습!!
#include using namespace std; int n, m; int room[51][51]; int dx[4] = { -1, 0, 1, 0 }; int dy[4] = { 0, 1, 0, -1 }; int start_x, start_y, start_d; int cnt = 0; int find_direction(int _d) { if (_d == 0) { return 3; } else { return _d - 1; } } void clean(int x, int y, int d) { if (room[x][y] == 0) { room[x][y] = 2; cnt++; } for (int i = 0; i < 4; i++) { int nd = find_direction(d); int nx = x + dx[..
#include using namespace std; bool whitepaper[101][101] = {0, }; int colorpapernumber, ans; void color(int x, int y) { for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { whitepaper[x + i][y + j] = true; } } } int areacalculate(bool graph[101][101]) { int area = 0; for (int i = 0; i < 100; i++) { for (int j = 0; j < 100; j++) { if (graph[i][j]) { area++; } } } return area; } int main()..
https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 문제 상근이는 나무 M미터가 필요하다. 근처에 나무를 구입할 곳이 모두 망해버렸기 때문에, 정부에 벌목 허가를 요청했다. 정부는 상근이네 집 근처의 나무 한 줄에 대한 벌목 허가를 내주었고, 상근이는 새로 구입한 목재절단기를 이용해서 나무를 구할것이다. 목재절단기는 다음과 같이 동작한다. 먼저, 상근이는 절단기에 높이 H를 지정해야 한다. 높이를 지정하면 톱..
https://www.acmicpc.net/problem/1072 1072번: 게임 김형택은 지금 몰래 Spider Solitaire(스파이더 카드놀이)를 하고 있다. 형택이는 이 게임을 이길 때도 있었지만, 질 때도 있었다. 누군가의 시선이 느껴진 형택이는 게임을 중단하고 코딩을 하기 시 www.acmicpc.net 문제 김형택은 지금 몰래 Spider Solitaire(스파이더 카드놀이)를 하고 있다. 형택이는 이 게임을 이길 때도 있었지만, 질 때도 있었다. 누군가의 시선이 느껴진 형택이는 게임을 중단하고 코딩을 하기 시작했다. 의심을 피했다고 생각한 형택이는 다시 게임을 켰다. 그 때 형택이는 잠시 코딩을 하는 사이에 자신의 게임 실력이 눈에 띄게 향상된 것을 알았다. 이제 형택이는 앞으로의 모든..