no image
JAVA [Algorithm] - 백준 1010 다리 놓기
📝문제 설명  📢입출력 예시 ✏️문제 풀이1. 다리는 1:1 매칭으로만 연결 가능하다.2. 크로스로 다리가 겹치면 안된다. N M개에서 다리를 놓을 포인트를 정해야 하고 즉, M개 중 N개를 선택해야 한다. 이는 조합 공식으로 mCn을 사용하면 된다. 예를 들어 (1,2,3,4)에서 (2,1,4)를 뽑았다 가정하면 이는 (1,2,4)나 (4,2,1) 처럼 순서가 다르게 뽑혀도 조합은 뽑는 순서를 고려하지 않기에 이 모두 1개의 경우로 본다. 위 그림처럼 왼쪽은 불가능하고 왼쪽은 가능하다. 왼쪽에서는 (2,1,4)가 오른쪽에서는 (1,2,4)가 뽑혔지만 조합의 경우는 이 둘 다 하나의 경우로 본다.결국 조합 공식을 사용하면 서로 다른 다리가 겹치는 경우는 제외될 수밖에 없다. 공식으로 확인하자면 r! ..
2024.12.29
no image
자바 [Programmers] 2단계 - 멀리 뛰기
📝문제 설명 - 경우의 수를 보니 DP 문제인것 같아서 경우의 수를 구해봤다칸경우의 수가지1칸11가지2칸1+122가지3칸1+1+12+11+23가지4칸1+1+1+12+1+11+2+11+1+22+25가지5칸1+1+1+1+12+1+1+11+2+1+11+1+2+11+1+1+21+2+22+1+22+2+18가지 뭔가 규칙이 보이는 것 같다.DP[N] = DP[N-1] + DP[N-2]의 공식이 보인다바로 ㄱㄱ📢입출력 예시 ✏️문제 풀이class Solution { public long solution(int n) { long[] dp = new long[2001]; dp[1] = 1; dp[2] = 2; for(int i=3; i
2024.12.06
no image
자바 [Algorithm] DP - 백준 11058 크리보드
1. 문제  2. 접근법알고리즘 순서1. N 값 받기2. 크리보드의 4가지 역할을 사용하여 1...n번 눌렀을 때 dp배열에 최대 값을 저장3. dp[N] 값 출력 경우의 수 확인N = 1A (1) N = 2AA (2) N = 3AAA (3) N = 4AAAA (4) N = 5AAAAA (5) N = 6AA(전체선택)(복사)(붙여넣기)(붙여넣기) : AAAAAA (6)AAA(전체선택)(복사)(붙여넣기) : AAAAAA (6)AAAAAA (6) N = 7A (전체선택)(복사)(붙)(붙)(붙)(붙) : AAAAA (5)AA (전체선택)(복사)(붙)(붙)(붙) : AAAAAAAA (8)AAA (전체선택)(복사)(붙)(붙) : AAAAAAAAA(9)AAAA (전체선택)(복사)(붙여넣기) : AAAAAAAAA(8..
2024.05.22