목록문제 (388)
sm 기술 블로그
import java.util.*; class Main { static int[] tmp; static boolean[] visited; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int M = sc.nextInt(); sc.close(); tmp = new int[M]; visited = new boolean[N]; DFS(N, M, 0); } private static void DFS(int N, int M, int depth) { if (depth == M) { for (int val : tmp) { System.out.printf(val + " "); } Syst..
N,M = map(int, input().split()) visited = [False] * N tmp = [] def DFS(N,M,depth): if depth == M: print(' '.join(map(str,tmp))) return for i in range(N): if not visited[i]: visited[i] = True tmp.append(i + 1) DFS(N, M, depth + 1) visited[i] = False tmp.pop() DFS(N,M,0) 문제요약 DFS를 이용하여 백트래킹을 해보아라. 설명 DFS와 백트래킹에 대한 개념은 아래를 참고하자. https://smhope.tistory.com/309 백트래킹 백트래킹 더 이상 나아갈 수 없는 상황에서 그 이전 단계로 복..
import java.util.*; import java.io.*; class Main { public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] sBits = br.readLine().split(" "); int n = Integer.parseInt(sBits[0]); int m = Integer.parseInt(sBits[1]); int five = fiveCnt(n)-fiveCnt(n-m)-fiveCnt(m); int two = twoCnt(n)-twoCnt(n-m)-twoCnt(m); System.o..
import sys input = sys.stdin.readline n, m = map(int, input().split()) def fiveCnt(x): cnt = 0 while x >= 5: cnt += x//5 x //= 5 return cnt def twoCnt(x): cnt = 0 while x >= 2: cnt += x//2 x //= 2 return cnt print(min(fiveCnt(n)-fiveCnt(n-m)-fiveCnt(m), twoCnt(n)-twoCnt(n-m)-twoCnt(m))) 문제요약 이항계수를 구한 값에서 뒤부터 0이 아닌 숫자가 나올 때까지 0은 몇번 나오는가? 설명 이 문제는 조합을 먼저 구하고 할 수 없다. 조건이 최대 입력값이 20억이기 때문에 규칙을 찾아야 한..