반응형
츄르사려고 코딩하는 코집사입니다.
1. [백준 알고리즘] 백준 1592번 영식이와 친구들 자바(Java)
1) 문제번호 : 1592번
2) 문제 출처
2. 문제
영식이와 친구들이 원형으로 모여서 시계방향으로 1부터 N까지 적혀있는 자리에 앉는다. 영식이와 친구들은 공 던지는 게임을 하기로 했다. 게임의 규칙은 다음과 같다.
일단 1번 자리에 앉은 사람이 공을 받는다. 그리고 나서 공을 다른 사람에게 던진다. 다시 공을 받은 사람은 다시 공을 던지고, 이를 계속 반복한다. 한 사람이 공을 M번 받았으면 게임은 끝난다. (지금 받은 공도 포함하여 센다.) 공을 M번보다 적게 받은 사람이 공을 던질 때, 현재 공을 받은 횟수가 홀수번이면 자기의 현재 위치에서 시계 방향으로 L번째 있는 사람에게, 짝수번이면 자기의 현재 위치에서 반시계 방향으로 L번째 있는 사람에게 공을 던진다.
공을 총 몇 번 던지는지 구하는 프로그램을 작성하시오.
3. 제약사항
-
4. 입력
첫째 줄에 N, M, L이 입력으로 들어온다. N은 3보다 크거나 같고, 1,000보다 작거나 같은 자연수이고, M은 1,000보다 작거나 같은 자연수이다. L은 N-1보다 작거나 같은 자연수이다.
5. 출력
첫째 줄에 공을 몇 번 던지는지 횟수를 출력한다.
6. 풀이
- index가 위치한 값이 홀수이면 시계방향으로 L 만큼 공을 던지고, index가 위치한 값이 짝수이면 반시계방향으로 L만큼 공을 던진다.
- 그래서, 공을 던진 후에 공을 받은 위치에는 index를 증가시키면서 count를 증가시킨다.
7. 소스 코드
import java.util.*;
public class Main {
static int N; // 친구 수
static int M; // 공받는 횟수
static int L; // 공 옮기는 위치
static int[] friend; //친구 ArrayList
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();// 친구 수
M = sc.nextInt();// 공받는 횟수
L = sc.nextInt();// 공 옮기는 위치
//친구 ArrayList 선언
friend = new int[N+1];
//공 던진 횟수
int count = 0;
//처음 공은 첫 번째 사람이 받으니까 1 증가
friend[1] = 1;
int index = 1;
while(true) {
//현재 배열의 인덱스 위치의 값이 M이라면 끝
if(friend[index]==M) break;
if(friend[index]%2==1) index = index + L; //인덱스가 홀수일 경우 시계방향으로 L만큼 공 이동
else index = index - L; //인덱스가 짝수일 경우 반시계방향으로 L만큼 공 이동
//시계 방향이면서 배열을 벗어날 때 Index + L;
if(index>N) index %= N;
//반시계 방향이면서 배열을 벗어날 때 Index - L;
else if(index<1) index += N;
friend[index]++;
count++;
}
System.out.println(count);
}
}
반응형
'알고리즘 > 백준 알고리즘' 카테고리의 다른 글
[백준 알고리즘] 백준 20540번 연길이의 이상형 자바(Java) (0) | 2021.02.21 |
---|---|
[백준 알고리즘] 백준 13300번 방 배정 자바(Java) (0) | 2021.02.21 |
[백준 알고리즘] 백준 10163번 색종이 자바(Java) (0) | 2021.02.20 |
[백준 알고리즘] 백준 2798번 블랙잭 자바(Java) (0) | 2021.02.19 |
[백준 알고리즘] 백준 17070번 파이프 옮기기1 자바(Java) (0) | 2021.02.19 |
[백준 알고리즘] 백준 16935번 배열 돌리기3 자바(Java) (0) | 2021.02.19 |
[백준 알고리즘] 백준 1654번 랜선 자르기 자바(Java) (0) | 2021.02.18 |
[백준 알고리즘] 백준 4153번 직각삼각형 자바(Java) (0) | 2021.02.18 |
최근댓글