일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- upper_bound
- 재귀
- 운영체제
- 알고리즘
- 너비우선탐색
- 언리얼
- 백준
- fsm
- unity
- 인프런
- DFS
- 유한상태기계
- c++
- 프로그래머스
- 게임개발
- 웅진씽크빅
- 이분탐색
- c#
- 구현
- 안드로이드
- unreal
- 시리얼라이제이션
- 개발일지
- 유니티
- 이득우
- BFS
- binary_search
- lower_bound
- 게임개발공모전
- UI 자동화
- Today
- Total
목록Algorithm (22)
초고교급 희망
그리디를 이용한 문제였다. 회의가 끝나는 시간이 빠른 기준으로 정렬한다. 회의가 끝나는 시간이 동일하다면 시작하는 시간이 빠른 기준으로 정렬한다. #include #include #include #include using namespace std; int n; pair conference[100005]; bool func(pair a, pair b) { if (a.second == b.second) { return a.first > n; for (int i = 0; i > conference[i].first >> conference[i].second; } sort(c..
개요 이분탐색의 개념자체는 쉽다. 심지어 stl에 이미 함수가 있어서 직접 구현할 필요조차 없다. 하지만 조금만 꼬아서 내도 문제 난이도가 저세상으로 간다. 그러니 코딩 테스트에서 킬러 문항으로 자주 출제되는 이분탐색 응용 문제 공략에 대해 알아보자! 이분탐색이란? 정렬되어 있는 배열에서 특정 데이터를 찾기 위해 탐색 범위를 절반으로 줄여가며 찾는 탐색 방법 시간 복잡도는 O(logN)이다. C++ STL의 이분탐색 시간 복잡도 STL에 있는 이분탐색 함수도 O(logN)이다. 헤더 파일 에 std::binary_search가 있다. 이분탐색을 하기 위해선 정렬이 필수인데 std::sort 또한 에 있다. binary_search template bool binary_search (ForwardItera..
찾고자하는 숫자가 얼마나 많이 있는지 구하는 문제였다. C++ STL에 있는 lower_bound와 upper_bound를 사용해도 좋지만 직접 구현하여도 좋다. 하지만 실제 시험에서는 제한 시간이 모자라거나, 긴장해서 실수할 수도 있기 때문에 STL을 쓰는 것이 더 좋을 것 같다. #include #include using namespace std; int n, m; int a[500001]; int lower_idx(int target, int n) { int st = 0; int ed = n; while (st < ed) { int mid = (st + ed) / 2; if (a[mid] < target) { st = mid + 1; mid = (st + ed) / 2; } else if (a[mi..
이분탐색을 이용한 문제였다. 이분탐색을 직접 구현해주어도 좋지만, STL에 있는 binary_search를 이용하여 빠르게 풀어주었다. 실제 코딩테스트에서는 시간이 부족한 경우가 많기 때문에 STL을 활용할 수 있다면 최대한 도움을 받고, 다음 문제를 풀러가는 것이 좋은 것 같다. 그리고 이분탐색 하기 전에 데이터 정렬하는 것 잊지 말기 #include #include #include using namespace std; int main() { int n, m; vector v; scanf("%d", &n); for (int i = 0; i < n; i++) { int temp; scanf("%d", &temp); v.push_back(temp); } sort(v.begin(), v.end()); sca..
안녕하세요. 날씨가 쌀쌀하니 귤의 계절이 돌아왔네요. 그래서 프로그래머스 귤 고르기를 풀어보았습니다. 🍊문제 https://school.programmers.co.kr/learn/courses/30/lessons/138476 🐼문제 설명 경화는 과수원에서 귤을 수확했습니다. 경화는 수확한 귤 중 'k'개를 골라 상자 하나에 담아 판매하려고 합니다. 그런데 수확한 귤의 크기가 일정하지 않아 보기에 좋지 않다고 생각한 경화는 귤을 크기별로 분류했을 때 서로 다른 종류의 수를 최소화하고 싶습니다. 예를 들어, 경화가 수확한 귤 8개의 크기가 [1, 3, 2, 5, 4, 5, 2, 3] 이라고 합시다. 경화가 귤 6개를 판매하고 싶다면, 크기가 1, 4인 귤을 제외한 여섯 개의 귤을 상자에 담으면, 귤의 크기의..
재귀 : 하나의 함수에서 자기 자신을 다시 호출해 작업을 수행하는 알고리즘 어떤 문제를 재귀로 푼다는 것은 곧 귀납적인 방식으로 문제를 해결하겠다는 것. 재귀 함수의 조건 특정 입력에 대해서는 자기 자신을 호출하지 않고 종료되어야 함(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 #include #include using namespace std; int testcase, num; vector ans; void solve(int target, int sum, int sign, int prev, int idx, string expression) { if (idx == target) { sum += (prev * sign); if (sum == 0) { ans.push_back(expression); } return; } else { // + solve(target, sum + (prev * sign), 1, idx + 1, idx + 1, expression + '+' + to_string(idx + 1)); // - solve(target, sum..