Notice
Recent Posts
Link
- Today
- Total
hye-log
[백준]1592번 영식이와 친구들(JAVA) 본문
0. 문제 링크
https://www.acmicpc.net/problem/1592
1592번: 영식이와 친구들
예제 1의 경우 일단 1번이 공을 잡는다. 1번은 공을 한 번 잡았기 때문에, 공을 3번에게 던진다. 3번은 공을 한 번 잡았기 때문에, 공을 5번에게 던진다. 5번은 2번에게 던지고, 2번은 4번에게 던진다
www.acmicpc.net
1. 문제 설명
1) 1부터 N까지 적혀있는 자리에서 시계방향으로 공 던지기
2) 현재 공을 받은 횟수가 홀수번이면 시계 방향으로 L번째, 짝수번이면 반시계 방향으로 L번째 사람에게 던짐
3) 한 사람이 공을 M번 받으면 게임은 끝남
2. 입출력
// input
5 3 2
// output
10
3. 코드
import java.util.*;
public class b1592 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(); // 자리의 수
int M = sc.nextInt(); // 공 받은 횟수
int L = sc.nextInt(); // 다음 공 받는 사람
int[] arr = new int[N]; // 원형
int idx = 0; // 현재 공의 위치
int ans = -1; // 공 던진 횟수
boolean flag = false; // M번 받았는지 여부
while(true) {
for(int i = 0; i < arr.length; i++) { // M번 받았는지 확인
if (arr[i] == M) {
flag = true;
}
}
if (flag == true) { // true이면 반복문 종료
break;
}
arr[idx]++; // idx번째 공 받은 횟수 추가
if(arr[idx] % 2 == 1) { // 홀수번이면
idx = idx + L; // 시계 방향으로 L번째
} else { // 짝수번이면
idx = idx - L; // 반시계 방향으로 L번째
}
if(idx < 0) { // 0보다 작으면
idx += N; // N 더하기
} else if (idx >= N){ // N보다 크거나 같으면
idx -= N; // N 빼기
}
ans++; // 공 던진 횟수 추가
}
System.out.printf("%d", ans);
}
}
실행 결과
4. 회고
1) while 문을 사용하여 종료 조건을 설정하고, 시계 방향과 반시계 방향의 경우를 나눔
5. Github
https://github.com/iihye/Algorithm/blob/main/Baekjoon/b1592.java
728x90
'CodingTest > Baekjoon' 카테고리의 다른 글
[백준]11399번 ATM(JAVA) (0) | 2023.07.29 |
---|---|
[백준]17413번 단어 뒤집기2(JAVA) (0) | 2023.07.29 |
[백준]2798번 블랙잭(JAVA) (0) | 2023.07.29 |
[백준]2567번 색종이 - 2(JAVA) (0) | 2023.07.29 |
[백준]14502번 연구소(Python) (1) | 2022.10.14 |
Comments