ALGORITHM/BOJ
[IM 대비] BOJ_1592 영식이와 친구들
lemon-scone
2021. 8. 28. 23:48
https://www.acmicpc.net/problem/1592
1592번: 영식이와 친구들
일단 1번이 공을 잡는다. 1번은 공을 한 번 잡았기 때문에, 공을 3번에게 던진다. 3번은 공을 한 번 잡았기 때문에, 공을 5번에게 던진다. 5번은 2번에게 던지고, 2번은 4번에게 던진다. 4번은 1번에
www.acmicpc.net
package IM_0828;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BOJ_1592_clean {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = null;
st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken()); // 시계방향으로 1부터 N까지 적혀있는 자리에 앉는다
int M = Integer.parseInt(st.nextToken()); // 한 사람이 공을 M번 받으면 게임이 끝난다
int L = Integer.parseInt(st.nextToken()); // 공을 M번보다 적게 받은 사람이 공을 던질 때 L번째 있는 사람한테 공을 던진다
int[] check = new int[N+1];
check[1] = 1; // 일단 1번 자리에 앉는 사람이 공을 받는다
int i = 1;
int count = 0;
while(true) {
if(check[i]%2!=0) {
i = i+L;
if (i>N) i = i-N;
check[i]++;
count++;
}
else if (check[i]%2==0) {
i = i-L;
if (i<0) i = N+i;
check[i]++;
count++;
}
if (check[i]==M) {
break;
}
}
System.out.println(count);
}
}
package IM_0828;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BOJ_1592 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = null;
st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken()); // 시계방향으로 1부터 N까지 적혀있는 자리에 앉는다
int M = Integer.parseInt(st.nextToken()); // 한 사람이 공을 M번 받으면 게임이 끝난다
int L = Integer.parseInt(st.nextToken()); // 공을 M번보다 적게 받은 사람이 공을 던질 때 L번째 있는 사람한테 공을 던진다
int[] check = new int[N+1];
check[1] = 1; // 일단 1번 자리에 앉는 사람이 공을 받는다
int i = 1;
int count = 0;
while(true) {
if(check[i]%2!=0) {
//System.out.println("홀수 일 경우를 탐");
//System.out.println("내자리 인덱스 : " + i);
i = i+L;
if (i>N) i = i-N;
//System.out.println("공보내줄 인덱스 : " + i);
check[i]++;
//System.out.println("공보내준 인덱스" + i + " 값 : " + check[i]);
count++;
//System.out.println("공튀긴 횟수 : " + count);
//System.out.println();
}
else if (check[i]%2==0) {
//System.out.println("짝수 일 경우를 탐");
//System.out.println("내자리 인덱스 : " + i);
i = i-L;
if (i<=0) i = N+i;
//System.out.println("공보내줄 인덱스 : " + i);
check[i]++;
//System.out.println("공보내준 인덱스" + i + " 값 : " + check[i]);
count++;
//System.out.println("공튀긴 횟수 : " + count);
//System.out.println();
}
if (check[i]==M) {
break;
}
}
System.out.println(count);
}
}
테스트 출력 주석풀고 돌리면
풀 때 끄적거린 메모