728x90
반응형
2024.08.01기준 - 브론즈1
백준, BEAKJOON, BOJ, JAVA, 자바
풀이
이 문제는 배스킨라빈스 게임을 진행할 때, 모든 게임에서 가장 적게 턴을 사용한 게임 번호와 진행 회수를 출력하는 문제입니다.
이 문제의 조건은
(j - 1) % (m + 1) = 몫...나머지가 주어질 때, 나머지, 나머지 + (m + 1), 나머지 + (m + 1) + (m + 1), ... 을 말하면 무조건 이기는 조건입니다.
예제 20 6을 통해서 설명을 진행하도록 하겠습니다.
1. (j - 1) % (m + 1)인 나머지 부터 시작을 하게 됩니다.
19 % 7의 나머지인 5부터 시작을 하게 됩니다.
2. 그런 다음 규용이가 최대 6자리 까지 말하며, 그 다음 유진이가 (전에 말한 수) + (m + 1)을 말하게 됩니다.
3. 그렇게 조건 대로 말하게 되면 무조건 j보다 1작을 수를 마지막에 말하게 되며 마지막에 규용이가 j를 말하는 순간 게임이 끝나게 됩니다.
코드
package Main;
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine()); // 게임의 수
// 0 : 게임번호, 1 : 진행 횟수
int[] result = new int[2];
result[1] = Integer.MAX_VALUE;
int num, m, count;
StringTokenizer st;
for (int i = 1; i <= n; i++) {
st = new StringTokenizer(br.readLine());
num = Integer.parseInt(st.nextToken()); // 말하면 지는 수
m = Integer.parseInt(st.nextToken()); // 한번에 말할 수 있는 최대 수
count = 0;
// 게임이 진행되는 횟수
num -= (num - 1) % (m + 1);
count = 2 * (num / m + 1);
if (result[1] > count) {
result[0] = i;
result[1] = count;
}
}
sb.append(result[0]).append(" ").append(result[1]);
bw.write(sb.toString());
bw.flush();
bw.close();
br.close();
}
}
728x90
반응형
'코딩테스트 일기 (BAEKJOON)' 카테고리의 다른 글
BEAKJOON / 백준 - JAVA 11916번 볼질 (0) | 2024.08.02 |
---|---|
BEAKJOON / 백준 - JAVA 10829번 이진수 변환 (0) | 2024.08.01 |
BAEKJOON / 백준 - JAVA 1384번 메시지 (0) | 2024.07.31 |
BAEKJOON / 백준 - JAVA 4108번 지뢰찾기 (0) | 2024.07.30 |
BAEKJOON / 백준 - JAVA 31432번 소수가 아닌 수 3 (0) | 2024.07.29 |