목록알고리즘/조합 (3)
delpho
Think 1. 주어진 N의 범위를 보고, 일반적인 순열 알고리즘으로는 시간초과가 나겠다는 생각을 했다. 2. 문제풀이 아이디어가 떠오르지 않아 https://nanyoungkim.tistory.com/233를 참고했다. 3. 순열의 경우의 수 = 팩토리얼인 사실을 활용한 풀이방식이다. 범위만큼의 팩토리얼을 미리 초기화하고, k에 순열 경우의수를 빼면서 값을 찾거나, 순열 값 이전까지 탐색하면서 k의 값을 구하는 방식이 되게 인상깊었다. 제출 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class test { static int N..
Think 1. Map을 활용해서 문제 푸는 아이디어는 어렵지 않았음. 2. 종류별 개수로 경우의 수를 도출하는 계산식을 잘 고려해야함 ( 종류별 개수 + 1을 모두 곱한 후 (-1) 해주어야함 ) 종류별 개수 + 1을 하는 이유는, 옷을 안 입는 경우도 있기 때문 마지막에 -1을 하는 이유는, 옷을 모두 안 입는 경우는 없기 때문 제출 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { static int N, M, map[][], white, blue; static Map m = new HashMap(); sta..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/CgrWL/btsFhTHXxzN/fiUPqpS84bCbVxGSraINA0/img.png)
Think 1. 답을 구하는 방법을 고민하다가 나온 결론은, (O의 위치까지 가는 경로의 수) * ([N-1][M-1]의 위치까지 가는 경로의 수) (= 조합) 2. 경로의 수를 구하는 방법을 고민했는데, https://blog.naver.com/occidere/221012382627 의 내용처럼 구하는 방법을 떠올리게 되었음 3. 따라서, previousK(), nextK()로 함수를 나눈 뒤, 경우의 수 두 개를 구한 후 답을 도출함. 4. K = 0일때 혹은 K % M = 0 일때의 경우들에서 예외 처리를 잘 해주어야했음. 제출 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; ..