일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Elasticsearch
- DFS
- 월미도
- Spring Data JPA
- 코드업
- 인천여행
- VPC
- Apache Kafka
- 오일러프로젝트
- 스프링 부트
- 자료구조
- 백준
- 쿠버네티스
- Spring
- 카프카
- aws
- Docker
- 클라우드 컴퓨팅
- Kafka
- 로드밸런서
- 스프링
- 스프링부트
- JPA
- 백트래킹
- gcp
- 알고리즘
- 클라우드
- 프로그래밍문제
- Spring Boot
- springboot
- Today
- Total
목록Algorithm & DataStructure/Problems (7)
GW LABS
14720번 우유 축제 문제는 그리디 문제로 배열을 조건대로 순회하면서 개수를 세는 문제였다. 오랜만에 그리디 문제를 풀면서 느낀 점은 문제를 파악하는 속도와 센스가 많이 줄었다는 것이었다. 주기적으로 그리디 관련 문제를 풀면서 감각을 살려야한다. 아래는 소스코드다. #include using namespace std; int stores[1000]; int getNextStore(const int& currentStore) { switch (currentStore) { case 0: return 1; case 1: return 2; case 2: return 0; default: return 0; } } int main() { int storeNum; cin >> storeNum; for (int i ..
오랜만에 백준 구현문제를 풀어보았다. 단순한 구현문제로 반복문을 활용하는 문제이다. 코드를 줄이는 연습을 계속해서 진행해야겠다. 반복문 안에 들어가는 변수들은 미리 선언해서 반복문의 중복을 피하도록 해야한다. #include #include using namespace std; char phase[100][100]; int main() { int size; cin >> size; for (int i = 0; i > phase[i][k]; } } int cmd; cin >> cmd; switch (cmd) { case 2: for (int i = 0; i < size; ++i) { for (int k = 0; k..
쉬운 그래프 문제 중 하나였다. 기본적인 개념을 복습하기 좋게 문제가 설계되어 있었다. 방향 그래프에 대한 개념과 그래프 순회방법을 복습했다. 해당 문제는 인접리스트를 쓸 필요가 없는데 인접 노드가 하나로 고정되어 있기 때문이다. 아래는 소스코드이다. #include #include #include using namespace std; int graph[1001]; bool visited[1001]; void bfs(int start) { queue q; q.push(graph[start]); visited[start] = true; while (!q.empty()) { int now = q.front(); q.pop(); if (!visited[now]) { visited[now] = true; q.p..
백준 8974번 희주의 수학시험은 주어진 규칙에 따라 수열을 만들고 더하는 연산을 수행하면 되는 문제이다. 입력범위가 적기 때문에 부르트포스 방식으로 풀이했는데, 수열의 일반항을 구해서 O(1) 가능할지도 검토해봐야겠다. 아래는 풀이이다. #include using namespace std; int container[1001]; int main() { int start, end; cin >> start >> end; int index = 1; int number = 1, accumulator = 1; while (index
수학문제로 원 안에 내접할 수 있는 사각형에 대한 문제였다. 사각형의 대각선을 구해서 원의 지름과 비교하면 간단하게 풀이가 가능하다. #include #include #include using namespace std; int main() { int index = 1; while (true) { int r, w, l; cin >> r; if (r == 0) break; cin >> w >> l; double diagonal = sqrt(w*w + l*l); if (2*r >= diagonal) { cout
C++로 그래프 탐색에 대한 문제를 연습한 적이 많지 않다. 파이썬으로 풀때와 차이점은 BFS 문제에 그래프 깊이 정보를 pair 형식으로 queue에 넣어도 메모리 초과 문제가 발생하지 않는 것 같다(오....). 1389번 케빈 베이컨의 6단계 법칙은 양방향 인접리스트를 입력받아 그래프 노드간 거리를 구하고, 그 합계가 최소인 지점을 찾는 문제이다. DFS로 풀이하려고 했는데 문제 분류에 BFS가 되어 있어 BFS로 풀이했다. #include #include #include #include #include using namespace std; bool visited[201] = {false}; int getLinkScore(int user, int target, map link) { int score..
정렬을 이용한 문제이다. 좌표들을 정렬하고 나서 원래 갖고 있던 인덱스를 통해 조건에 맞는 값을 출력하면 되는 문제였는데 set을 이용해서 자동으로 입력값들을 정렬하는 방식으로 접근했다. 다른 풀이법으로는 이진탐색을 이용해서 풀이하는 방법이 있었다. #include #include #include #include #include #include using namespace std; int main() { int count; cin >> count; set cord_set; int* cords = new int[count]; for (int idx = 0; idx < count; ++idx) { int tmp; scanf("%d", &tmp); cords[idx] = tmp; cord_set.insert(..