이번에 풀어본 문제는
백준 15721번 번데기 입니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
static int A, T, BD;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
A = Integer.parseInt(br.readLine());
T = Integer.parseInt(br.readLine());
BD = Integer.parseInt(br.readLine());
System.out.print(play());
}
static int play() {
int b = 0, d = 0;
int n = 2;
while (true) {
for (int i = 0; i < 4; i++) {
if (i % 2 == 0) {
b++;
if (b == T && BD == 0) return (b + d - 1) % A;
}
else {
d++;
if (d == T && BD == 1) return (b + d - 1) % A;
}
}
for (int i = 0; i < n; i++) {
b++;
if (b == T && BD == 0) return (b + d - 1) % A;
}
for (int i = 0; i < n; i++) {
d++;
if (d == T && BD == 1) return (b + d - 1) % A;
}
n++;
}
}
}
번데기라는 게임을 A명이 즐길 때, T번째로 뻔 또는 데기를 외치는 사람의 순서를 찾는 문제입니다.
범위가 크지 않기 때문에 그냥 주어진 대로 반복문을 돌리면 해결할 수 있습니다.
괜히 코드 중복이 많아 굉장히 거슬리지만.. 꾹 참았습니다 ㅋㅋㅋㅋ 평소에도 이런거 깔끔하게 만든다고 시간을 많이 쓰는 편인데, 알고리즘은 정답을 맞추는게 우선인 만큼 이런 부분에서도 시간을 줄여야 한다고 생각합니다!