본문 바로가기
PS 문제 풀이/Baekjoon

[BOJ] 백준 1592 영식이와 친구들

by 까망 하르방 2021. 2. 26.
반응형

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

 Input 
5 3 2

 Output 

10

 

player[]에 공을 받은 횟수 저장합니다. (처음 1번 선수가 받은 공도 횟수에 포함됩니다.)

player = [1 0 0 0 0] (※ 인덱스를 1번부터라고 가정)

 공을 3번에게 던진다   player = [1 0 1 0 0]

▶ 공을 5번에게 던진다   player = [1 0 1 0 1]

▶ 공을 2번에게 던진다   player = [1 1 1 0 1]

▶ 공을 4번에게 던진다   player = [1 1 1 1 1]

▶ 공을 1번에게 던진다   player = [2 1 1 1 1]

▶ 공을 4번에게 던진다   player = [2 1 1 2 1]

▶ 공을 2번에게 던진다   player = [2 2 1 2 1]

▶ 공을 5번에게 던진다   player = [2 2 1 2 2]

▶ 공을 3번에게 던진다   player = [2 2 2 2 2]

▶ 공을 1번에게 던진다   player = [3 2 2 2 2]

    1번이 공을 세 번 잡았기 때문에 게임 종료


#include <iostream>
using namespace std;
 
int main(){
    int N, M, L;
    cin >> N >> M >> L;
    int player[1001] = {0, };
 
    // 처음 1번 선수에서 시작
    player[1] = 1;  
    int idx = 1;
    // 공을 던진 횟수
    int answer = 0; 
    while(true){
        if(player[idx] >= M){
            cout << answer << endl;
            return 0;
        }
        if(player[idx] % 2 == 0){
            idx -= L;
            if(idx <= 0) idx += N;
        }
        else{
            idx += L;
            if(idx > N) idx -= N;  
        }
        
        player[idx]++; 
        answer++;
    }
}

반응형

댓글