+ 이 글은 작성자가 직접 공부하고 복습하며 작성한 글입니다. 만약 직접 작성하지 않았다면, 꼭 출처를 밝히겠습니다!
+ 이 글은 개인적인 공부를 바탕으로 작성되었기에, 틀린 부분이 있을 수 있으며, 틀린 부분이 있다면 알려주시면 감사하겠습니다!
+ 이 글을 다른 곳으로 가져가신다면, 꼭 출처를 남겨주세요~
+ '참고사이트'는 공부하기 위해 참고한 사이트들을 모아 둔 것입니다.
2225번 문제를 풀지 못해 다른 사람들의 접근방식을 참고했었는데, 그 접근 방식들로 인해 충격을 받았다.
"와... 저렇게도 볼 수 있구나..."라는 생각에 여기에 기록을 남깁니다.
*** 문제를 보면, 정수 N을 K개의 정수의 합으로 나타낸다고 할 때, 경우의 수를 구해야 한다.
*** https://www.acmicpc.net/problem/2225
[내 접근 방식](틀림)
0 ─ 0
└ 0 ─ 0└ 0
와 같이 트리형태로 만들어 각 자리에 올 수 있는 경우의 수를 구해 곱한다.
[옳은 접근 방식] (정답)
1. N개의 1을 나열한 뒤, K개의 나무 를 두는 경우의 수를 생각해라
ex) N = 5, K = 3
1 1 1 1 1 & l l l => l 1 l 1 1 1 l 1 or l l l 1 1 1 1 1
와 같은 경우의 수를 구하면 된다.
2. 시작점에서 N까지 K개의 경로로 갈 때, 갈 수 있는 방법의수를 생각해라
ex) N = 4, K = 4
에서 N과 K에 맞는 점까지의 최단 거리 횟수를 구하면 된다.
K 열의 번호를 "1번째 수 + 2번째 수 + 3번째 수 + 4번째 수"로 생각해서, 오른 쪽으로 이동한 횟수 만큼 해당 번째의 수를 표시해주면 된다.
위와 같은 경우라면,
"1번째 수 + 2번째 수 + 3번째 수 + 4번째 수" -> "1 + 2 + 0 + 1" 으로 4가 이루어 진다는 말이다.
최단 거리 횟수를 구하는 이유는, 하나의 K에서 될 수 있는 숫자는 N이 최대이기 때문이다.
** 참고사이트 **
'요리 레시피 > Algorithm' 카테고리의 다른 글
[다익스트라] 다익스트라 - 유명한 최단거리 찾기 알고리즘!!! (0) | 2018.03.27 |
---|---|
[DFS][BFS] DFS 와 BFS (0) | 2018.03.27 |
[Dp] DP에서 배열 사용 (0) | 2018.03.26 |
[BackJoon] 충격의 N-Queen 문제 feat.9663번(N-Queen) (0) | 2018.03.26 |
[Algorithm] <bits/stdc++.h>란? (1) | 2018.03.03 |