본문 바로가기

전체 글107

[DP] 프로그래머스 고득점킷 N으로 표현 - Python 파이썬 생각하기 N을 사용한 횟수에 따라 단계를 나눌 수 있다 N을 사용한 횟수에 따라 단계를 나누게 된다면 N을 구하기 위해서는 이전에 구했던 것들을 사용해야 한다. 예를 들어 N을 3번 사용했다면 N을 1번 사용한 경우의 수와 N을 2번 사용한 경우의 수를 합치면 된다 따라서 이 문제는 DP를 통해 풀어보는 것으로 한다 구체화하기 dp[i] 는 N을 i번 사용했을 때 만들 수 있는 수의 집합 ex ) N= 3일 때, dp[1] = { 3 } dp[2] = {33, 6, 0, 9, 1} 따라서 dp[i]를 만들기 위해서는 이전까지의 모든 결과들을 조합하여 dp[i]를 만들어야 함 dp[k] = dp[i] 사칙연산 dp[k-i] (i=1 ~ k-1) 이런식으로 점화식 구성이 가능하지 않을까 싶다 1. 33, 3.. 2021. 10. 10.
Postmans 포스트맨 / Curl을 통해 보내는 request spring boot를 통해 API 개발을 하다가 예상치 못한 문제를 만났다 이슈 회원가입 등 DB에 insert를 진행하는 JPA 로직이 포함되어 있는 API는 모두 POSTMAN(포스트맨)을 통해서 request를 보낼 때와 터미널의 Curl을 이용해서 보낼때 response가 다르다는 이슈였다. 포스트맨을 통해 request & response를 점검한 후에 view document - API 명세서 자동 생성기를 통해서 프론트엔드 담당 친구에게 주는 방식으로 작업을 하고 있었다. 포스트 맨을 통해 API에 요청을 보내면 정상 response가 돌아오지만 API 명세서에 써져있는 curl을 가지고 터미널에서 request를 보내면 위와 같이 500 error를 받게되었다. 왜 같은 API인데 POS.. 2021. 10. 4.
[DP] Dynamic Programming 동적계획법 이란? 컴퓨터의 연산 속도는 한계가 있고, 메모리 공간도 한계가 있으니 최대한 돌려쓸 수 있는 방법이 없을까? 다음의 조건이 만족하면 DP로 접근해야 한다. 완전탐색으로 답을 찾으려는데 너무 많은 시간이 걸린다 재귀로 진행했을 시에 오버헤드가 났을 경우 DP로 접근해야 하는지 최종적으로 다음 조건을 판단한다 큰 문제가 작은 문제로 나누어진다 작은 문제에서 구해지는 답들이 큰 문제들의 정답 구하는데에 영향을 준다 DP에는 두가지 방식이 있는데 Top-Down (하향식)과 Down-Top (상향식)이 있다 트리 형식으로 생각하고 Top-Down 피보나치 수열을 통해 한번 정리해본다 피보나치 수열 n번째 수는 n-1 번째 수와 n-2 번째 수의 합 1번째와 2번째 수는 1 Top-Down 하향식 방식 구해야할 답을 .. 2021. 9. 27.
[DFS] 프로그래머스 고득점킷 타켓넘버 - Python 파이썬 DFS 깊이 우선 탐색 주어진 numbers를 트리 형식으로 구성하여 탐색해나간다 트리에서 각 stage는 주어진 number의 순서 탐색해 나갈 때, 하나를 끝까지 파고들어서 더한 후에 target과 같은지 확인한다 -> 깊이 우선 탐색을 실시 numbers 리스트 아이템을 마이너스로 어떻게? numbers 리스트의 마이너스들을 저장하기 위한 minus 리스트를 따로 만들어서 관리한다. 기존 numbers에 있는 아이템들은 plus라는 리스트에 복사해 놓은 다음 numbers 리스트 요소들에 -1을 곱해주어서 minus 리스트에 넣어준다. 즉, plus 리스트와 minus 리스트의 인덱스는 서로 같은 numbers의 요소에서 나왔다고 할 수 있다. 처음 시작이 Plus가 될수 있고 Minus가 될수 있.. 2021. 9. 27.