일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 내돈내산
- 백엔드공부
- 그래프탐색
- JavaScript
- 프로젝트진행
- 백엔드스쿨
- 교육철학과 교육사
- 전화영어
- OAuth
- Spring
- 백엔드
- 제로베이스
- 최단경로문제
- 자바스크립트
- 탐색알고리즘
- Node.js
- OpenAPI프로젝트
- java
- 개발자
- array
- Queue
- maven
- 원격근무
- 시급합니다
- 탄력근무
- BFS
- 자료구조
- webServlet
- YBM전화영어
- npm
- Today
- Total
목록전체 글 (84)
개발자취
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b5kmvT/btsrcr4p4EM/T2C7tEcKdVieoprAKD4OU0/img.png)
본 글은 OpenAPI 데이터를 기반으로 WebApp을 생성하는 프로젝트의 과정을 담았다. 프로젝트 진행 과정을 정리한 글은 총 세 개의 글인 계획 및 Data 핸들링, 1차 기능 구현, 2차 기능 구현 및 검토로 이루어져 있고, 그 중에서 본 글은 2차 기능 구현 및 검토에 해당한다. 들어가며 2차 구현에서는 금방 해결될 것이라 예상했던 db 마이그레이션에서 꽤 시간이 오래 걸렸다. 그래서 발생했던 주요 이슈 및 이슈 해결 방안, 참고 자료를 순차적으로 정리해볼 것이다. 주요 이슈 1. MaridDB to SQLite SQLite는 서버가 없는 응용프로그램만 존재한다. 따라서 SQLite로 DB를 연결할 때 라이브러리를 mariadb-jdbc에서 sqlite-jdbc로 교체만 해주면 될 것이라는 생각이..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dlhFWU/btsp1e8jRms/kKHiLE7DmisT5qpRRvKvf1/img.png)
본 글은 OpenAPI 데이터를 기반으로 WebApp을 생성하는 프로젝트의 과정을 담았다. 프로젝트 진행 과정을 정리한 글은 총 세 개의 글인 계획 및 Data 핸들링, 1차 기능 구현, 2차 기능 구현 및 검토로 이루어져 있고, 그 중에서 본 글은 1차 기능 구현에 해당한다. 들어가며 구현 과정에서 어떤 블로그를 참고했는지 노트해놓은 것을 정리해봤다. 프로젝트를 진행하는 순서에서 계획도 계획이지만, 구현이 제대로 이뤄지지 않으면 프로젝트 결과물이 나오지 않으니, 기간을 최대한 맞추기 위한 어떤 노력을 했는지를 중점으로 내용을 담아봤다. 구현 중에 발견한 사소한 이슈들을 어떻게 처리했는지도 중간에 담아봤다. 구현 흐름 1. 프로젝트 생성 (1) Servlet 프로젝트 생성 https://suyeoncho..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cHiH8V/btsqd3wNzjP/FKHYBZqwgT8LguAjXhtsyk/img.png)
본 글은 OpenAPI 데이터를 기반으로 WebApp을 생성하는 프로젝트의 과정을 담았다. 프로젝트 진행 과정을 정리한 글은 총 세 개의 글인 계획 및 Data 핸들링, 1차 기능 구현, 2차 기능 구현 및 검토로 이루어져 있고, 그 중에서 본 글은 계획 및 Data 핸들링에 해당한다. 들어가며 온라인 백엔드 스쿨에서 본 과제를 부여받았다. 과제를 진행중에 있지만, 아주 간단하게 세워놓은 계획을 조금씩 구체화하며 진행중에 있었다. 그 내용을 메모장에 정리해놨는데, 글로 짜임새 있게 정리하고자 했고, 또한 다음주에 진행하는 2차 구현을 위해서도 리마인드 차원으로 본 글을 작성하게 되었다. 진행과정 1. 본 과정을 진행하는 데 앞서서 이걸 어떻게 해야하나 엄청 고민을 했던 것 같다. MariaDB를 사용해서..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b46rlW/btsoxXmpPSH/KH1G0YDKLVaywO27W55vXk/img.png)
필자는 dp 방식으로 풀기 위해 메모이제이션에 사용할 배열을 잘못 생성하여 본 문제에 대해 12시간 이상을 고민했다. 독자는 그러지 마시길 바라며 글을 시작한다. 1. 문제 이해 _ 댐은 n개의 수문을 가지고 있다. 각각의 수문은 자체 용량과 물길을 가지고 있고, 하류에 영향을 줄 수 있다. 수문이 열렸을 때, 영향을 받는 지역은 홍수의 위험이 있다. 수문에 의한 예상 피해액은 지역의 인구의 수와 면적으로 계산할 수 있다. 수문 Gi의 유량이 Fi m3/hour 이고, 피해 비용이 Ci라고 하자. 댐에는 물이 Vm3 만큼 저장되어 있고, 이 물을 T시간 이내에 모두 비워내야 하는 상황이다. 이때, 수문을 어떻게 열어야 피해 비용이 최소가 되는지를 구하는 프로그램을 작성하시오. 예를 들어, 댐에 수문이 4..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/duKK8H/btsorkNIc5f/06akkCbWVdCkcRKbtk8aR0/img.png)
1. 문제 분석Given an array nums of distinct integers, return all the possible permutations. You can return the answer in any order. 본 문제는 주어진 정수 배열인 nums를 가능한 모든 순열로 만들어서 반환하는 문제다. 어떠한 순서로든 반환이 가능하다. 2. 로직 플로우int 배열인 nums를 입력받고, 배열의 순서를 바꿀 때 사용할 temp 배열을 같은 int 배열로 생성한다. 그리고 dfs에서 방문 순서에 쓰일 visited 배열을 초기화 한 뒤, dfs 함수를 호출한다. 재귀함수 형태로 dfs를 통과할 때는 visited의 방문 체크를 true, false로 바꾸면서 진행한다. dfs를 재귀적으로 호출하..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/TxTxS/btsoa96Gh8P/OgRCZZaHVeO5dFKiYi2qkK/img.png)
1. 문제 이해 10,000 이하의 자연수로 이루어진 길이 N짜리 수열이 주어진다. 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이를 구하는 프로그램을 작성하시오. 입력값이 길이가 N인 수열에 해당한다. 이 수열의 부분합을 구하는데, 또다른 입력 값인 S 이상이 되는 경우를 찾는다. 그 중에서 연속된 수의 길이 중 가장 짧은 길이를 구하는 것이다. 이때 부분합을 구하는 방법으로는 1차원 배열이므로 투포인터 알고리즘을 적용한다. * 투포인터(Two Pointer) 알고리즘 : left와 right로 구분한 두 포인터를 좌우로 이동해가면서 요구조건에 맞는 답을 찾는 풀이법이다. 2. 로직 2-1) 로직 플로우 정수 배열은 수열의 길이는 N+1로 초기화 시킴(ri..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bjb6KH/btsnLvcmatF/9XzM0JPwkP7tOMT18jU5dK/img.png)
1. 들어가기 지난 글에서는 경로의 가중치가 음수로 부여된 경우에 사용되는 벨만-포드 알고리즘에 대해 살펴봤다. 이번 글에서는 경로의 가중치가 음수인 경우에 사용하는 알고리즘이긴 하나, 모든 노드간 최단 거리를 탐색하는 알고리즘인 플로이드-워셜(Floyd-Warshall)에 대해 알아볼 것이다. 2. 플로이드-워셜(Floyd-Warshall) 플로이드-워셜 알고리즘으 모든 정점의 쌍 사이에 최단 경로를 구할 수 있다. 다만, 음의 가중치의 순환(음수 사이클)이 없다는 가정 하에서 구할 수 있다. 모든 쌍의 최단 경로는 최단 경로의 부분 경로이므로, 경로의 부분 경로가 모여 곧 최단경로가 되는 형태이다. 그러므로 최단 경로를 구하는 상향식 접근방법이라 볼 수 있다. 플로이드-워셜 알고리즘은 모든 정점의 쌍..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bAwbJe/btsnDyahurm/3hP1XsdssNlU22l8e6Kxnk/img.png)
1. 들어가기Java.util.Arrays 클래스에는 sort()가 있다. Arrays.sort()를 호출하면 배열을 정렬할 수 있다.위 [사진 1]을 통해 sort()는 DualPivotQuicksort로 정렬이 이뤄진다는 것은 쉽게 찾아볼 수 있고, JAVA에서 제공하는 API를 사용하는 정도로만 알고 있었기 때문에 정렬에 대한 더 자세한 구현에 대해서는 크게 관심을 갖지 않았었다. 그런데 새로운 사실을 알게 되었다. Arrays.sort()와 관련하여 JAVA API 문서에 다음과 같이 적힌 내용 때문이다.All elements in the array must implement the Comparable interface.[사진 2]와 [사진 3]을 통해 Comparable interface가 이렇..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cNeO0C/btsnzETK1LI/kkQSfIYzdJ4NeSiFnfW8R1/img.jpg)
본 문제는 벨만 포드 알고리즘 개념으로 해결할 수 있는 최단경로문제입니다. 벨만 포드 알고리즘에 대한 개념은 아래 링크로 확인해주시고, 문제를 바로 풀어보도록 하겠습니다. 2023.07.14 - [개발/Dev | 알고리즘] - 최단 경로 문제 (2) 벨만-포드 알고리즘을 중심으로 최단 경로 문제 (2) 벨만-포드 알고리즘을 중심으로 1. 들어가기 지난 글에서는 경로의 가중치가 음이 아닌 수로 부여된 경우에 사용되는 다익스트라 알고리즘에 대해 살펴봤다. 이번 글에서는 경로의 가중치가 음수인 경우에 단일 출발지의 최단 24h-daily-life.tistory.com 1. 문제 이해 N개의 도시가 있다. 그리고 한 도시에서 출발하여 다른 도시에 도착하는 버스가 M개 있다. 각 버스는 A, B, C로 나타낼 수..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bU02ee/btsnygZTkeQ/JcULWkbhl2wDqZmyZF67jk/img.png)
1. 들어가기 지난 글에서는 경로의 가중치가 음이 아닌 수로 부여된 경우에 사용되는 다익스트라 알고리즘에 대해 살펴봤다. 이번 글에서는 경로의 가중치가 음수인 경우에 단일 출발지의 최단 경로 문제를 해결하는 벨만-포드(Bellman-Ford) 알고리즘에 대해 알아볼 것이다. 2. 벨만-포드(Bellman-Ford) 벨만-포드 알고리즘은 출발 점으로부터 도달 가능한 음의 가중치의 순환(음수 사이클)이 존재하는 경우에는 최단경로를 구할 수 없고, 그러한 순환이 없다면 최단 경로들과 그 경로들의 가중치를 계산할 수 있다. 벨만-포드 알고리즘은 매번 모든 간선을 확인하므로 다익스트라 알고리즘보다는 느리다. 시간 복잡도는 O(VE); E는 경로(간선) 수, V는 꼭짓점(노드)의 수 이다. 하지만 간선이 음수로 존..