전체 글 195

BOJ#2014 소수의 곱

BOJ#2014 소수의 곱 * 문제https://www.acmicpc.net/problem/2014 * 풀이어려운 문제입니다. K개의 소수가 주어졌을 때, 이러한 소수의 곱들 중에서 N번째 수를 구해 보자.예를 들어 세 소수가 2, 5, 7이었다면, 이러한 곱들을 오름차순으로 나타내 보면, 2, 4, 5, 7, 8, 10, 14, 16, 20, 25, 28, 32, 35, 등이 된다. 즉, 주어진 소수가 [2, 5, 7]일 때2, 5, 7만을 약수로 갖는 숫자들 중 N 번째 숫자를 구하여라. 이 문제는 다음과 같은 알고리즘으로 해결을 할 수 있습니다. 1. 주어진 소수를 배열에 저장한다. 2. 주어진 소수를 PriorityQueue에 add 한다. 3. 아래 과정을 N-1 번 반복(loop) - Prio..

Algorithm/DP 2017.09.27

BOJ#10164 격자상의 경로

BOJ#10164 격자상의 경로 * 문제https://www.acmicpc.net/problem/10164 * 풀이카카오 블라인드 채용 - 1차 테스트의 모의 테스트에 나온 문제와 유사합니다. 점화식은 간단하게 dp[row][col] = dp[row-1][col] + dp[row][col-1] 임을 알 수 있습니다. 단, K가 0이 아닌 경우 경유지가 1개 있는 것이므로이 경우 시작점->경유지, 경유지->도착점의 경우의 수를 각각 구한 뒤 곱해주면 원하는 답을 얻을 수 있습니다. * 나의 코드 https://github.com/stack07142/BOJ/blob/4cccafbf34e20c197249ac96c20b33f15e644bb1/BOJ%2310164/src/Main.java import java.i..

Algorithm/DP 2017.09.26

BOJ#1904 01타일

BOJ#1904 01타일 * 문제https://www.acmicpc.net/problem/1904 * 풀이수열은 끝이 1 또는 00인 2가지 경우로 나눌 수 있습니다.따라서 dp 점화식은 dp[i] = dp[i-1] + dp[i-2] * 나의 코드https://github.com/stack07142/BOJ/blob/a028fa1300ba4112e41be95b11d5daed4b71e8b8/BOJ%231904/src/Main.java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { static final int MOD = 15746; static int[]..

Algorithm/DP 2017.09.25

BOJ#1915 가장 큰 정사각형

BOJ#1915 가장 큰 정사각형 * 문제https://www.acmicpc.net/problem/1915 * 풀이카카오 모의 테스트에서 나온 문제와 동일합니다. 풀이 아이디어는 다음과 같습니다.검사 위치에서 인접한 3방향(위쪽, 왼쪽, 왼쪽위 대각선 )의 값을 검사하여검사 위치의 값을 최소값 + 1으로 갱신해줍니다. * 나의 코드https://github.com/stack07142/BOJ/blob/master/BOJ%231915/src/Main.java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class M..

Algorithm/DP 2017.09.22

Kakao 카카오 블라인드 채용 - 1차 코딩 테스트

Kakao 카카오 블라인드 채용 - 1차 코딩 테스트 - 6, 7번 코드는 프로그래머스에 문제 공개되면 다시 채점해보고 코드 올리도록 하겠습니다. - 4번 문제도 채점은 다시 해봐야되는데 틀린 점이 없어보여서 일단 올려봅니다. 잘못된 점 있으면 댓글 부탁드립니다. - 5번 문제는 너무 급하게 풀어서 불합리한 부분이 있을 수 있습니다. 댓글 달아주세요. 1번 문제. 비밀 지도/** * 카카오 Test#1_1 비밀지도 */ public class Main { public static void main(String[] args) { int n = 5; int[] arr1 = { 9, 20, 28, 18, 11 }; int[] arr2 = { 6, 1, 21, 17, 28 }; String[] map = sol..

Algorithm/기타 2017.09.21

BOJ#1309 동물원

BOJ#1309 동물원 * 문제https://www.acmicpc.net/problem/1309 * 풀이N이 1일 때부터 3일때까지 그림을 직접 그려보면 규칙을 찾으실 수 있을겁니다. 점화식dp[row][0] = (dp[row - 1][0] + dp[row - 1][1] + dp[row - 1][2]) % MOD; dp[row][1] = (dp[row - 1][0] + dp[row - 1][2]) % MOD; dp[row][2] = (dp[row - 1][0] + dp[row - 1][1]) % MOD; * 나의 코드https://github.com/stack07142/BOJ/blob/master/BOJ%231309/src/Main.java import java.io.BufferedReader; impo..

Algorithm/DP 2017.09.15

BOJ#2096 내려가기

BOJ#2096 내려가기 * 문제https://www.acmicpc.net/problem/2096 * 풀이메모리 제한이 4MB 입니다. 저는 처음에 재귀 형식으로 풀었다가 바텀업 방식으로 다시 풀었습니다. 또한, [100001][3] 사이즈의 dp배열과 map 배열을 모두 제거하였습니다. 두가지 형태의 코드 모두 아래에 붙여놓았으니 참고하시면 좋겠습니다. * 나의 코드 https://github.com/stack07142/BOJ/blob/458582301c132e9a61af00c77068edac24669619/BOJ%232096/src/Main.java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream..

Algorithm/DP 2017.09.12

BOJ#2294 동전 2

BOJ#2294 동전 2 * 문제https://www.acmicpc.net/problem/2294 * 풀이dp 기본 문제입니다.solve 함수는 크게 3부분으로 구성되어 있습니다. dp 정의dp[coinSum] : 현재 동전의 합이 coinSum일 때, k가 되기 위해 추가해야 하는 동전의 최소 개수solve(coinSum) 함수 : dp[coinSum]을 반환하는 함수. 1. 기저 사례동전의 합이 k에 딱 맞는 경우, return 0동전의 합이 k에 맞지 않는 경우, return 매우 큰 수 if (coinSum == k) return 0; if (coinSum > k) return INF; 2. 메모이제이션 dp 배열의 값을 -1로 초기화 했습니다. 즉, dp[coinSum]이 -1인 경우 메모이제이..

Algorithm/DP 2017.09.12