문제 : 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();
}
}
'PS > BOJ' 카테고리의 다른 글
[자바] 백준 17071 - 숨바꼭질 5 (java) (0) | 2022.11.29 |
---|---|
백준 2563 - 색종이 (자바, C, C++, node.js, Kotlin, Python, C#) (1) | 2022.11.29 |
[자바] 백준 6763 - Speed fines are not fine! (java) (0) | 2022.11.27 |
[자바] 백준 6750 - Rotating letters (java) (0) | 2022.11.26 |
[자바] 백준 2162 - 선분 그룹 (java) (0) | 2022.11.26 |
댓글