#64. [백준_C언어] 11866 : 요세푸스 문제 0

 

 입력 코드 

#include <stdio.h>
void josae()
{
    int N, M;
    int i, j;
    int arr1[5001] = { 0 };
    int cnt;
    j = 1;
    scanf("%d %d", &N, &M);
    printf("<");
    for (i = 0;i < N;i++)
    {
        cnt = 0;
        while (1)
        {
            if (arr1[j] == 0)
                cnt++;
            if (cnt == M)
            {
                arr1[j] = -1;
                if (i == N - 1)
                    printf("%d>",j);
                else
                printf("%d, ", j);
                break;
            }
            j++;
            if (j > N)
                j = 1;
        }
 
    }
}
int main()
{
    josae();
}

출처 evga7.tistory.com/20

 

 

참고 henrynoh.tistory.com/30

 

11866번 요세푸스문제 BOJ 백준 C언어

문제 요세푸스 문제는 다음과 같다. 1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람

henrynoh.tistory.com

 

 

 코드 설명 

#자료구조 #큐

 

 

 문제 출처 

www.acmicpc.net/problem/11866

 

11866번: 요세푸스 문제 0

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)

www.acmicpc.net