반응형
    
    
    
  이문제는 완전탐색 문제다. 원을 등분하여 몇번째 자리인지 check 하는 것이 중요하다.
3 번째 높이 관중석에 1번째 관중석의 각도는 1 / 3 이된다. 이것은 6번째 높이의 2 번째 관중석의 각도와 똑같다.
2 / 6 == 1 / 3 최대 2000까지 잇으므로 boolean 배열을 선언해서 gcd를 통해 분수를 기약분수로 나타냇을 때
관중석을 놔둬도 되는지 안되는지 판벼할 수 있다.
import java.util.Scanner;
public class 관중석 {
	static boolean View[][] = new boolean[2001][2001];
	static int GCD(int a, int b) {
		// a >= b
		while (b != 0) {
			int c = a % b;
			a = b;
			b = c;
		}
		return a;
	}
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int D1 = sc.nextInt();
		int D2 = sc.nextInt();
		long ans = 0;
		for (int i = D1; i <= D2; i++) {
			// 1 ~ i 까지 중복체크
			// 기약 분수로 나타냇을때 중복이 안되면 더한다.
			// 결국 완탐..
			for (int j = 1; j <= i; j++) {
				// 1 / 1 북쪽 좌석
				int gcd = GCD(i, j);
				if (View[i / gcd][j / gcd])
					continue;
				ans++;
				View[i / gcd][j / gcd] = true;
			}
		}
		System.out.println(ans);
	}
}
반응형
    
    
    
  'ProgramSoliving' 카테고리의 다른 글
| 백준 : 16929 (0) | 2020.05.26 | 
|---|---|
| 백준 : 8983 사냥꾼 (0) | 2020.05.24 | 
| 백준 : 10800 (0) | 2020.05.22 | 
| 백준 : 17090 미로 탈출하기 (0) | 2020.05.21 | 
| SW아카데미 : 숫자게임 (0) | 2020.05.21 |