본문 바로가기
PS/BOJ

[자바] 백준 23972 - 악마의 제안 (java)

by Nahwasa 2022. 11. 28.

 문제 : boj23972


 

필요 알고리즘 개념

  • 수학
    • 수학적 사고가 필요한 문제이다.

※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다.

 


 

풀이

  문제에 제시된 방식에서 민주가 가지고 있는 금액이 x라 할 때, 손해를 보지 않는다는걸 수식으로 표현하면 '1'과 같다. 이걸 '5'가지 쭉 식을 정리해보자. 결국 '5'의 식이 나오고, 저걸 구해주면 된다.

이하 코드처럼 나눈 몫을 정수형으로 변경한 div, 나머지인 mod가 있을 때, div+(mod>0?1:0) 을 해주면 된다.


 

코드 : github

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

public class Main {
    private void solution() throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int k = Integer.parseInt(st.nextToken());
        int n = Integer.parseInt(st.nextToken());
        if (n==1) {
            System.out.println(-1);
            return;
        }
        long div = 1l*k*n / (n-1);
        long mod = 1l*k*n % (n-1);
        System.out.println(div+(mod>0?1:0));
    }

    public static void main(String[] args) throws Exception {
        new Main().solution();
    }
}

댓글