일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 세그먼트 트리
- 백트래킹
- Floyd-Warshall
- VituralBox
- 알고리즘
- 축사 배정
- Flpyd-Warshall
- 이분탐색
- 이분 매칭
- 이분매칭
- 나무자르기
- 최소스패닝트리
- 코드그라운드
- 피보나치수열
- 다이나믹 프로그래밍
- 쉬운 계단 수
- Mysql5.7
- 최소신장트리
- 동적계획법
- SpringBoot
- Ubuntu64bit
- tensorflow
- 이친수
- 연속합
- 네이버 지도 api
- 알고스팟
- pythonanywhere
- 백준
- 피노나치 수열
- 분할정복
- Today
- Total
목록알고리즘/문제해결 소스코드 (32)
초보개발자
입력: 테스트 케이스 T 구하고자 하는 숫자 N출력: 1, 2, 3으로 이용하여 표현할 수 있는 경우의 수 예: 4를 표현한다고 하면 아래와 같은 경우의 수가 있다1+1+1+1 / 1+1+2 / 1+2+1 / 2+1+1 / 2+2 / 1+3 / 3+1알고리즘: 동적계획법, 피보나치 수열소스코드 #define _CRT_SECURE_NO_WARNINGS #include #include using namespace std; int main() { int n, t; scanf("%d", &t); vector dp(12, -1); dp[1] = 1; dp[2] = 2; dp[3] = 4; for (int i = 4; i
입력: 수빈이 위치 N 수빈이 동생 위치 K 100,000이하의 자연수출력: 수빈이가 동생을 찾기 위해 걸리는 최소 시간조건: 수빈이는 현재 자리에서 한 칸 앞으로 가거나 뒤로 갈 수 있으며 두 배로 이동할 수 있다.알고리즘: BFS소스코드 #define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; #define MAX 100000 #define min(a, b) (a < b ? a : b) int main() { int n, k; scanf("%d%d", &n, &k); vector step(MAX + 1, MAX + 1); step[n] = 0; queue time; time.push(n); while (!time.e..
입력: 나무 개수 N, 총 자르려는 나무의 합 M, N개의 나무 길이출력: 적어도 M 길이의 나무를 자를 수 있는 최댓값알고리즘: 이분법, 이분탐색소스코드 #define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; typedef long long ll; int main() { int N, M; scanf("%d%d", &N, &M); vector tree(N); for (int i = 0; i 1) { mid =..
입력: 세로N 가로M 미로지도(1: 갈 수 있는 곳 0: 갈 수 없는 곳)출력: (1, 1)에서 (N, M)까지 가는 최소 칸 수알고리즘: BFS소스코드 #define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; int main() { int n, m; scanf("%d%d", &n, &m); int maze[100][100]; bool visited[100][100]; for (int i = 0; i < n; i++) for(int j=0; j 0 && (maze[x - 1][y] == 1)) { maze[x - 1][y] = maze[x][y] + 1; road.push((x - 1) * 100 + y); } if (..
입력: 테스트케이스 C(C≤50), 판자의 수(1≤N≤20,000), hi(0≤hi≤10,000)출력: 주어진 울타리에서 잘라낼 수 있는 최대 직사각형의 크기알고리즘: 세그먼트 트리, 분할정복소스코드#define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; #define MAX 20 * 1000 + 1 int N; vector wood, tree; void init(int, int, int); int retIndex(int, int, int, int, int); int maxS(int, int); int max(int a, int b) { return (a > b ? a : b); } int main() { int C; ..
분류: 구현, 그래프입력: 테스트 케이스 C( N >> M; adj = vector(N, vector(N, false)); indegree = vector(N, 0); string str; for (int i = 0; i > str; adj[str[0] - 'A'][str[1] - 'A'] = true; indegree[str[1] - 'A']++; } vector ret = topological(N); for (int i = 0; i < N; i++) cout
분류: 그래프, 트리 난이도: 하입력: 테스트 케이스 C( C; for (int i = 1; i > N >> M; point = vector(N, make_pair(0, 0)); disjoinSet lanSet(N); for (int j = 0; j > point[j].first;//x좌표 for (int j = 0; j > point[j].second;//y좌표 for (int j = 0; j > u >> v; lanSet.merge(u, v); } cout
분류: 그래프난이도: 하입력: 테스트 케이스 C( C; for (int i = 1; i > N; preorder = vector(N, 0);//초기화 inorder = vector(N, 0); for (int j = 0; j > preorder[j]; for (int j = 0; j > inorder[j]; int index = 0; printPostorder(N, index, 0, N - 1); cout right){ --root_index; return; } if (root_index >= n) return; int index = left; for (; index
분류: 분할정복 난이도: 하입력: 테스트 케이스 C(child[i] = ptr->child[i + 2]; ptr->child[i + 2] = temp; if (ptr->child[i]->ch == 'x') ChangeTree(ptr->child[i]); if (ptr->child[i + 2]->ch == 'x') ChangeTree(ptr->child[i + 2]); } } void ShowStr(node* ptr){ cout ch; for (int i = 0; i child[i]->ch == 'x') ShowStr(ptr->child[i]); else cout child[i]->ch; } } }; int main(){ int count; cin >> count; fo..