백준 1592번: 영식이와 친구들 (java)
2021. 8. 22. 16:59ㆍAlgorithm/백준
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Baekjoon_영식이와친구들 {
static int N; // 총 사람 수
static int M; // 한사람이 공을 M번 받으면 게임은 끝남
static int L; // 홀수 짝수 에 따라 L번째있는 사람에게 공을 던짐
static int[] arr; // 공 받는 횟수 킵
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(in.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
L = Integer.parseInt(st.nextToken());
arr = new int[N + 1]; // N 명의 사람들의 각각 공 받는 횟수를 저장.
int cnt = 0;
int i = 1; // arr 배열의 인덱스 1번자리부터 시작이니 초기화
arr[1] = 1; // 1번 자리는 첨시작 이니까 1로 초기화
while (true) {
if (arr[i] % 2 == 1 ) { // 홀수라면
if ((i + L) > N) { // i 의 값이 넘어갈 수도 있으니까 미리 조건으로 방지
i = i - N;
}
arr[i + L] += 1;
i += L;
cnt++; // 움직인 횟수
} else if (arr[i] % 2 == 0 ) { // 짝수라면
if ((i - L) <= 0) { // i의 값이 0과 같거나 작을 수도 있으니까 미리 조건으로 방지
i = i + N;
}
arr[i - L] += 1;
i -= L;
cnt++; // 움직인 횟수
}
if (arr[i] == M) { // 한사람이 받은 공 횟수가 M 번이 될 때 while 문 빠져나오기
break;
}
}
System.out.println(cnt);
}
}
728x90
'Algorithm > 백준' 카테고리의 다른 글
백준 10163번 : 색종이 (java) (0) | 2021.08.25 |
---|---|
백준 11399번: ATM (java) (0) | 2021.08.24 |
백준 2798번: 블랙잭 (java) (0) | 2021.08.24 |
백준 2567번: 색종이 - 2 (java) (0) | 2021.08.22 |
백준 2804번: 크로스워드 만들기 (java) (0) | 2021.08.22 |