백준 1592번: 영식이와 친구들 (java)

2021. 8. 22. 16:59Algorithm/백준

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