본문 바로가기
코딩테스트 준비/백준 C#

백준 C# - 1158 +) 문제 설명 및 풀이

by 코딩하는 돼징 2023. 10. 4.
반응형

문제 설명

그림에서와 같이 주어진 K와 현재 count와의 관계로 문제를 해결할 수 있다.

 

코드와 함께 알아보자

01 count가 len보다 작은 경우에만 반복된다.

count : 현재 인덱스

len : 현재 원에 남아 있는 사람의 수

while(count < len)
{
}

02 (count + 1) % K == 0 조건이 참인 경우

sb에 현재 제거된 사람의 번호를 추가하고 마지막 제거된 사람이 아니면 sb에 쉼표와 공백을 추가한다.

if((count +1) % K == 0)
{
    sb.Append(queue[count]);
    if (count < len - 1)
    {
        sb.Append(", ");
    }
}

03 (count + 1) % K == 0 조건이 거짓인 경우

현재 사람을 다시 원에 추가하고 len을 1증가시킨다.

else
{
    queue.Add(queue[count]);
    len++;
}

04 마지막으로 count를 증가시킨다.

count++;

05 결과 확인

백준에 있는 예제를 넣어서 출력해보면 아래와 같이 나온다.


전체 코드

using System;
using System.Collections.Generic;
using System.Text;

namespace baek2
{
    class Program
    {
        static void Main(string[] args)
        {
            string input = Console.ReadLine();
            string[] token = input.Split(' ');
            int N = int.Parse(token[0]);
            int K = int.Parse(token[1]);
            int count = 0;
            int len = N;
            List<int> queue = new List<int>();
            StringBuilder sb = new StringBuilder();
            sb.Append("<");
            
           for(int i =0; i<N;i++)
            {
                queue.Add(i + 1);
            }
           
           while(count < len)
           {
                if((count +1) % K == 0)
                {
                    sb.Append(queue[count]);
                    if (count < len - 1)
                    {
                        sb.Append(", ");
                    }
                }    
                else
                {
                    queue.Add(queue[count]);
                    len++;

                }
                count++;
            }
            sb.Append(">");
            Console.WriteLine(sb.ToString());
        }
    }
}
반응형

'코딩테스트 준비 > 백준 C#' 카테고리의 다른 글

백준 C# - 1753 +) 풀이 단계 설명  (0) 2023.10.09
백준 C# - 10866  (0) 2023.10.04
백준 C# - 10845  (0) 2023.09.22
백준 C# - 10828  (0) 2023.09.22
백준 C# - 1406 +) 문제 설명,풀이  (0) 2023.09.22

댓글