[BAEKJOON] 백준 25904: 안녕 클레오파트라 세상에서 제일가는 포테이토칩 (C#)

2024. 8. 24. 22:54IT/BaekJoon

문제 링크

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

 

 

 

문제

"안녕 클레오파트라 세상에서 제일가는 포테이토칩"은 이전 사람보다 높은 목소리로 🎵 안녕 클레오파트라 세상에서 제일가는 포테이토칩🎵 을 외치는 게임이다. 1번부터 N번까지의 사람이 원형으로 앉아서 순서대로 게임을 진행한다. 게임을 시작하면 먼저 1번이 높이 X의 목소리로 구호를 외친다. 다음 번호의 사람은 이전 번호의 사람이 냈던 목소리의 높이보다 1이 더 높은 목소리로 외친다. 즉, 1번이 X, 2번이 X+1, ‎⋯‎, N번이 X+N−1 높이의 목소리로 "안녕 클레오파트라 세상에서 제일가는 포테이토칩"을 외친다. N번이 성공하면 1바퀴가 돌았으므로 다시 N번의 다음 번호인 1번으로 차례가 돌아오게 된다.

자기 차례에 내는 목소리의 높이가 자신이 낼 수 있는 목소리의 상한선보다 클 경우 게임에서 지고 벌칙으로 술을 마신다. 각 사람마다 낼 수 있는 목소리의 높이의 상한선이 주어질 때, 처음으로 술을 마시는 사람을 구하여라.

 

입력

  • 첫 번째 줄에 게임에 참여하는 사람 수 N, 1번이 처음으로 낼 목소리의 높이인 정수 X가 공백으로 구분되어 주어진다. (3≤N≤100; 1≤X≤100) 
  • 두 번째 줄에 N개의 정수 T1,⋯,TN가 공백으로 구분되어 주어진다. Ti는 i번이 낼 수 있는 목소리 높이의 상한선이다. (1≤Ti≤200) 

 

 

출력

처음으로 술을 마시는 사람의 번호를 출력한다.

 

 

 

통과한 답안

namespace _25904
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string[] inputs = Console.ReadLine().Split(' ');
            int N = int.Parse(inputs[0]);
            int M = int.Parse(inputs[1]);
            int[] players = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
            int now = 0;

            while (true)
            {
                if (players[now] < M)
                {
                    Console.WriteLine(now + 1);
                    return;
                }

                now = (now + 1) % N;
                M++;                
            }
        }
    }
}

 

N명의 사람과 M의 시작 숫자, 각각의 사람이 말할 수 있는 최대 숫자가 주어질 때,

1번부터 N번까지, N번 이후에는 다시 1번으로 돌아오는 방식으로 숫자를 말할 때,

숫자를 말하지 못하고 게임에서 지는 사람을 찾는 문제이다.

 

now로 시작 사람을 설정한 뒤에 while 문을 이용하여

현재 플레이어가 M을 말할 수 있는지 확인하고,

말할 수 있다면 다음 플레이어로 이동하고, M을 1올리는 식으로 구현하였다.