전체 글(155)
-
[백준] 숨바꼭질 | 1697 | C++
풀이의 핵심은 BFS이다. 필자는 배열 안에 걸린시간을 저장하는 방식으로 풀었다. 정답 소스코드 #include using namespace std; int n, k; int arr[100004]; queue Q; void BFS() { while(!Q.empty()) { int x=Q.front(); Q.pop(); if(x==k) return; if(x-1>=0 && x-1=0 && x+1=0 && x*2>n>>k; arr[n]=1; Q.push(n); BFS(); cout
2022.08.20 -
[백준] 12865 | 평범한 배낭 | C++
풀이의 출처: https://chanhuiseok.github.io/posts/improve-6/ 이 문제는 냅색 알고리즘(knapsack algorithm)이 무엇인지 알 수 있게 해주는 문제이다. 풀이의 핵심은 2가지로 나눠서 볼 수 있다. 1. 이차원 다이나믹 테이블 풀이 준비물이 있다. i번째 물건의 무게를 저장하는 배열 W, i번째 물건의 가치를 저장하는 배열 V, i번째 물건까지 고려할 때 j용량까지 담을수 있는 최대가치값 dp[][] dp[i][j]의 의미는 i번째 물건까지 고려할 때, j용량에 담을 수 있는 가치값의 최대합이다. 따라서 다음과 같이 2중 for문을 작성하려 한다. 1번째 물건부터 n번째 물건까지 i반복: 1용량부터 k용량까지 j반복: j번째 용량에 i물건 투입가능: dp[i..
2022.08.17 -
프로세스를 kill하는 방법 (Windows)
개발한 앱을 실행하려는데 "이미 포트를 사용하고 있다"며 Exception을 내는 경우가 있다. Java 진영의 경우 대표적인 Exception은 다음과 같다. java.net.BindException: Address already in use: bind Spring의 경우 다음과 같은 에러가 나기도 한다. *************************** APPLICATION FAILED TO START *************************** Description: Web server failed to start. Port 8080 was already in use. 물론 다른 예외가 있을 수도 있으나 이미 포트를 사용하고 있다는 예외 집단은 아마 다음과 같은 해결책으로도 충분할 것이다. 이..
2022.08.01 -
복잡한 구조의 JSON 파싱하기
먼저 필요한 dependency가 있다. 바로 json-simple이다. (Maven의 경우 아래와 같다.) com.googlecode.json-simple json-simple 1.1.1 다음과 같은 JSON 응답이 들어왔다. 그 중에서 난 'items'만 필요하다. response > body > items로 하나씩 파싱을 해보았다. 여기서 아까 주입한 json-simple의 JSONParser가 쓰이게 된다. 위 사진과 같은 JSON 응답은 String 객체 result로 만들었다. 이것으로 result를 한 번 파싱해서 JSONObject형태로 만들어 준다. JSONParser parser = new JSONParser(); JSONObject parsedResult = (JSONObject) p..
2022.07.29 -
[백준] 14501 | 퇴사 | C++
재귀와 동적계획법으로 풀 수 있다. 1. 재귀(브루트포스) 재귀함수의 변수로는 날짜(인덱스) - int L, 누적상담료 - int psum 으로 설정하였다. 현재 날짜를 L이라고 하자. 날짜 L에 상담을 할 것인지 하지 않을 것인지 선택을 해야 한다. 1. 날짜 L에 상담하기로 선택했다면, 다음에 선택할 수 있는 날짜는 언제인가? 바로 날짜 L+T[L]부터 상담이 가능할 수 있지 않은가? 그리고 여태껏 누적되어온 상담료 psum에 오늘 선택한 상담료 P[L]을 더한다. void f(int L, int psum) { ... f(L+T[L], psum+P[L]); } 다만 조건이 있다. 상담을 진행하는 도중에 휴가날을 맞이할 수는 없는 노릇이다. 그래서 상담할지 선택하기 전에, 다음 상담이 가능한 날짜(L+..
2022.07.21 -
[백준] 17478 | 재귀함수가 뭔가요? | C++
풀이의 핵심은 이렇다. 정답 소스코드 #include using namespace std; int n; void f(int L) { for(int i=0; i
2022.07.20