Algorithm/λ°±μ€€

λ°±μ€€ 18429번 - 근손싀

giraffe_ 2022. 8. 28. 16:06

https://www.acmicpc.net/problem/18429

 

18429번: 근손싀

μ›¨μ΄νŠΈ νŠΈλ ˆμ΄λ‹μ„ μ’‹μ•„ν•˜λŠ” μ–΄λ–€ λŒ€ν•™μ›μƒμ€, ν˜„μž¬ 3λŒ€ μš΄λ™ μ€‘λŸ‰ 500의 κ΄΄λ ₯을 μ†Œμœ ν•˜κ³  μžˆλ‹€. λ‹€λ§Œ, ν•˜λ£¨κ°€ μ§€λ‚  λ•Œλ§ˆλ‹€ μ€‘λŸ‰μ΄ K만큼 κ°μ†Œν•œλ‹€. 예λ₯Ό λ“€μ–΄ K=4일 λ•Œ, 3일이 μ§€λ‚˜λ©΄ μ€‘λŸ‰μ΄ 488둜

www.acmicpc.net

 

 

 

 

 

맀일 μ„œλ‘œ λ‹€λ₯Έ μ–΄λ–€ ν‚€νŠΈλ₯Ό μ‚¬μš©ν•  μ§€ μ •ν•΄μ•Ό ν•˜λ―€λ‘œ μˆœμ—΄μ΄λ‹€. 

 

μˆœμ—΄μ„ λ§Œλ“€μ–΄μ„œ κ²°κ³Ό 배열에 μ €μž₯ν•˜κ³ , 완성이 λ˜μ—ˆμ„ λ•Œ μš΄λ™ κΈ°κ°„λ™μ•ˆ 항상 μ€‘λŸ‰μ΄ 500μ΄μƒμœΌλ‘œ μœ μ§€κ°€ λ˜λŠ”μ§€ ν™•μΈν–ˆλ‹€. μœ μ§€κ°€ 되면 카운트λ₯Ό μ˜¬λ Έλ‹€.

 

 

 

 

 

μ½”λ“œ

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	static int N, K;
	static int[] arr; 
	static boolean[] visited;
	static int[] result;
	static int count;

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
		
		N = Integer.parseInt(st.nextToken());
		K = Integer.parseInt(st.nextToken());

		arr = new int[N];
		
		st = new StringTokenizer(br.readLine(), " ");
		for(int i = 0; i < N; i++) {
			arr[i] = Integer.parseInt(st.nextToken());
		}
		
		//κ΅¬ν˜„
		visited = new boolean[N];
		result = new int[N];
		count = 0;
		
		permutation(0); //μˆœμ—΄
		
		//좜λ ₯
		System.out.println(count);
	}

	public static void permutation(int depth) {
		if(depth == N) {
			//μš΄λ™ κΈ°κ°„λ™μ•ˆ 항상 μ€‘λŸ‰μ΄ 500 이상이 λ˜λ„λ‘ ν•˜λŠ” 경우의 수
			int muscle = 500;
			
			for(int i = 0; i < N; i++) {
				muscle = muscle + result[i] - K;
				
				if(muscle < 500) return; //500보닀 μž‘μ•„μ§€λ©΄ X
			}
			count++;
			
			return;
		}
		
		for(int i = 0; i < N; i++) {
			if(visited[i]) continue;
			
			visited[i] = true;
			result[depth] = arr[i];
			permutation(depth + 1);
			visited[i] = false;
		}
	}
	
}

 

 

 

 

 

κ²°κ³Ό