11866: 요세푸스 문제 0
2022. 6. 17. 23:54ㆍC언어/백준
-Class2 : Silver5
https://www.acmicpc.net/problem/11866
-결과
-코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j, N, K, cnt, idx;
scanf("%d %d", &N, &K);
int* table = (int*)calloc(N, sizeof(int));
for (i = 0; i < N; i++)
{
table[i] = i + 1;
}
printf("<%d", table[K - 1]);
table[K - 1] = -1;
for (i = 0, idx = K; i < N - 1; i++)
{
cnt = 0; j = -1;
while (cnt < K)
{
j += 1;
if (table[(idx + j) % N] != -1)
cnt += 1;
}
idx = (idx + j) % N;
printf(", %d", table[idx]);
table[idx] = -1;
}
printf(">");
return 0;
}
-풀이
처음 입력 받은 N 크기의 배열을 할당하고, 배열에 1부터 N까지 저장한다.
K번째 값을 제거하고 -1로 채워넣고 table[k-1]을 지운다.
다시 k-1번째부터 반복문을 돌고, k번째 값을 찾으면 인덱스를 현재 위치로 바꾸고 -1로 채워넣는 과정을 반복한다.
'C언어 > 백준' 카테고리의 다른 글
10816: 숫자 카드 2 (0) | 2022.06.18 |
---|---|
2839: 설탕 배달 (0) | 2022.06.18 |
4949: 균형잡힌 세상 (0) | 2022.05.25 |
2164: 카드2 (0) | 2022.05.25 |
1978: 소수 찾기 (0) | 2022.05.24 |