일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 카프카
- 스프링부트
- JPA
- 백준
- aws
- 스프링 부트
- VPC
- Spring Data JPA
- 자료구조
- 로드밸런서
- 클라우드
- 백트래킹
- Spring
- DFS
- 프로그래밍문제
- 코드업
- springboot
- Spring Boot
- 스프링
- 쿠버네티스
- Elasticsearch
- 인천여행
- 클라우드 컴퓨팅
- Apache Kafka
- Kafka
- 월미도
- 알고리즘
- Docker
- 오일러프로젝트
- gcp
- Today
- Total
목록오일러프로젝트 (5)
GW LABS
#include #include using namespace std; #define SIZE 1001 #define SIZE_T 1000 int table[SIZE][SIZE]; int main() { int origin = (SIZE * SIZE); int row = 0, col = SIZE_T; int trigger = 0; // 0: 좌측, 1: 하단, 2: 우측, 3:상단 long long unsigned int answer = 0; int step = SIZE * SIZE; while (step--) { if (abs(row - col) == 0 || abs(row + col) == SIZE_T) answer += origin; table[row][col] = origin; origin--; /..
해당 문제의 경우 boolean 배열 통해서 초과수를 저장해 두는 것이 효율적이다. 동적 배열에 무식하게 초과수를 넣어두기 시작하면 다시 찾아야하는 오버헤드가 발생한다! #include #include #include using namespace std; bool bignumTable[28200]; bool isBignum(int n) { int divisorSum = 0; for (int i = 1; i n) { return true; } else { return false; } } int main() { // 1 - 28123 까지의 초과수를 구한다. for (int i = 1; i
20번, 21번 문제는 이전에 풀었던 방식을 20번, 21번 문제는 이전에 풀었던 방식을 적용하면 빠르게 풀 수 있는 문제였다. 친화수 문제인 21번은 주먹구구식으로 풀이해도 0.2초 풀이시간이 나오므로 어렵지 않은 문제다. 단순히 약수를 구해서 더하고 친화수인지 아닌지 판단하는 로직으로 풀이했다. 아래에 코드를 첨부한다. #include using namespace std; int divisorSum(int n) { int sum = 0; for (int i = 1; i < n - 1; i++) { if (n % i == 0) sum += i; } return sum; } int main() { int answer = 0; for (int num = 1; num
영어 기수로 수를 샜을 때, 몇 개의 영어 기수로 수를 샜을 때, 몇 개의 문자를 사용했는지 계산하는 문제이다. 처음 문제를 보고 겁을 먹었지만, 해쉬 테이블을 사용하면서 규칙을 유추해보니 생각보다 쉬운 문제였다. #include #include #include using namespace std; map cardinal = { {1, 3}, {2, 3}, {3, 5}, {4, 4}, {5, 4}, {6, 3}, {7, 5}, {8, 5}, {9, 4}, {10, 3}, {11, 6}, {12, 6}, {13, 8}, {14, 8}, {15, 7}, {16, 7}, {17, 9}, {18, 8}, {19, 8}, {20, 6}, {30, 6}, {40, 5}, {50, 5}, {60, 5}, {70, 7..
처음에 이 문제를 접근할 때 long double을 이용해서 해결을 하려고 했지만 숫자가 너무 컸기 때문에 자리수를 모두 구할 수 가 없었다. 자료형의 최대치를 넘어가는 숫자를 연산하려면 어떻게 해야할까? 단순히 동적배열에 연산을 하고 자리수에 해당하는 숫자를 연속적으로 할당하면 해결할 수 있다. #include #include #include using namespace std; int main() { vector a; a.push_back(2); int cases = 999; while (cases--) { for (int idx = 0; idx < a.size(); idx++) a[idx] *= 2; for (int idx = 0; idx = 10) { if (idx == a.size() - 1) ..