반응형
문제 설명
그림에서와 같이 주어진 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 |
댓글