-

[BOJ - JAVA] 1592 - 영식이와 친구들(시뮬레이션, 초간단) 본문

백준 문제 풀이

[BOJ - JAVA] 1592 - 영식이와 친구들(시뮬레이션, 초간단)

흣차 2022. 6. 15. 16:59
728x90
반응형

# 주소

https://www.acmicpc.net/problem/1592

 

1592번: 영식이와 친구들

예제 1의 경우 일단 1번이 공을 잡는다. 1번은 공을 한 번 잡았기 때문에, 공을 3번에게 던진다. 3번은 공을 한 번 잡았기 때문에, 공을 5번에게 던진다. 5번은 2번에게 던지고, 2번은 4번에게 던진다

www.acmicpc.net

# 문제

# 문제 해설 및 코드 리뷰

import java.util.*;
public class Main{
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		int m = scan.nextInt();
		int l = scan.nextInt();
		int[] arr = new int[n];
		int answer = 0;
		int temp = 0;
		while(true) {
			if(arr[temp] % 2 == 1) {
				temp = (temp + l) % n;
				arr[temp]++;
				answer++;
			}
			else if(arr[temp] % 2 == 0) {
				temp = ((temp - l) + n) % n;
				arr[temp]++;
				answer++;
			}
			if(arr[temp] == m)
				break;
		}
		System.out.print(answer - 1);
	}
}

이 문제를 풀면서 좀 어이없었던 것이 하나 있습니다.

문제 잘 보시면 짝수개일 때에는 반시계방향으로 움직인다 되어있는데 전 그거 신경안쓰고 시계방향으로 움직이게 코딩했는데 정답이 맞더라고요.

근데 다시 보니까 반시계네요.

왜맞는걸까요? ㅋㅋㅋ

 

문제 자체는 간단했습니다.

while문으로 계속 돌리면서 arr의 값이 m이 되면 break를 걸어주시면 끝입니다.

시계 방향일 때에는 temp인덱스에 l을 더하고 n을 나눠준 나머지.

반시계 방향일 대에는 temp인덱스에 l을 빼고 n을 더하고 n을 나누어주셔야합니다.(마이너스가 될 수 있어서)

감사합니다.

728x90
반응형
Comments