본문 바로가기

알고리즘(백준 등) 공부

SWEA 12051. 프리셀 통계

오늘 최대 게임 횟수, 오늘 승률과 전체 승률이 주어질 때 가능한 승률인지 확인하는 문제이다.

 

먼저, 전체 승률이 100이면 오늘 승률은 100이어야 하며, 전체 승률이 0이면 오늘 승률 또한 0이어야 한다. 이를 불만족하면 불가능하다. 이외에는 오늘의 승률을 만족하는 최소 게임 횟수가 오늘 최대 게임 횟수보다 크거나 같기만 하면 된다. 최소 게임 횟수는 100과 오늘 승률의 최대공약수를 구한 후 100을 최대공약수로 나누었을 때 오늘 최대 게임 횟수보다 작거나 같으면 된다.

private static long getGCD(long a, long b) {
    while (b != 0) {
        long r = a % b;
        a = b;
        b = r;
    }
    return a;
}
if ((pg == 100 && pd != 100) || (pg == 0 && pd != 0)) {
    sb.append("Broken").append('\n');
    continue;
}
            
long gcd = getGCD(pd, 100);
long minD = 100 / gcd;
if (minD > n) sb.append("Broken").append('\n'); 
else sb.append("Possible").append('\n');

 

 

결과 코드는 다음과 같다.

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

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int T = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();

        for (int tc = 1; tc <= T; tc++) {
            sb.append('#').append(tc).append(' ');
            StringTokenizer st = new StringTokenizer(br.readLine());
            long n = Long.parseLong(st.nextToken());
            long pd = Long.parseLong(st.nextToken());
            long pg = Long.parseLong(st.nextToken());
            
            if ((pg == 100 && pd != 100) || (pg == 0 && pd != 0)) {
                sb.append("Broken").append('\n');
                continue;
            }
            
            long gcd = getGCD(pd, 100);
            long minD = 100 / gcd;
            if (minD > n) sb.append("Broken").append('\n'); 
            else sb.append("Possible").append('\n');
        }
        
        br.close();
        System.out.print(sb);
    }
    
    private static long getGCD(long a, long b) {
        while (b != 0) {
            long r = a % b;
            a = b;
            b = r;
        }
        return a;
    }
}

'알고리즘(백준 등) 공부' 카테고리의 다른 글

SWEA 3819. 최대 부분 배열  (0) 2026.05.28
SWEA 12004. 구구단 1  (0) 2026.05.27
SWEA 12052. 부서진 타일  (0) 2026.05.26
SWEA 12222. 문자열 나누기  (0) 2026.05.24
SWEA 12368. 24시간  (0) 2026.05.22