※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 28066번 문제인 타노스는 요세푸스가 밉다이다.
문제는 아래 링크를 확인하자.

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

 

28066번: 타노스는 요세푸스가 밉다

$N$마리의 청설모가 $1$번부터 $N$번까지 순서대로 시계 방향으로 원을 이루면서 앉아있다. 타노스는 손을 튕겨서 순서대로 두 번째 청설모를 제거해 왔는데, 옆 나라의 수학자 요세푸스도 이미

www.acmicpc.net

문제에서 주어지는 내용을 직접 시뮬레이션하는 코드를 작성하자. 큐(queue) 자료구조에 1부터 N까지의 청설모를 차례대로 넣고, 이번 과정에서 다룰 K마리를 큐에서 접근하면 주어진 내용을 빠르게 시뮬레이션할 수 있다.

 

구체적으로, 큐의 첫 번째 원소가 "첫 번째 청설모"일 때, 첫 번째 청설모를 저장한 다음 큐에서 K마리(남은 청설모가 K보다 적다면 남은 마릿수)만큼 큐에서 청설모를 제거하고 첫 번째 청설모를 큐에 새로 추가하면 다음 "첫 번째 청설모"가 큐의 맨 앞에 있는 상태로 만들 수 있다. 이를 반복해 문제를 해결하자.

 

아래는 제출한 소스코드이다.

#include <iostream>
#include <queue>
using namespace std;

int N, K;
queue<int> que;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> N >> K;
	for (int i = 1; i <= N; i++) que.push(i);

	while (que.size() > 1) {
		int kp = que.front();
		int itercnt = min(K, (int)que.size());
		for (int i = 0; i < itercnt; i++) que.pop();
		que.push(kp);
	}

	cout << que.front();
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 28068 // C++] I Am Knowledge  (0) 2023.11.30
[BOJ 28067 // C++] 기하가 너무 좋아  (0) 2023.11.29
[BOJ 28065 // C++] SW 수열 구하기  (1) 2023.11.27
[BOJ 28064 // C++] 이민희진  (2) 2023.11.26
[BOJ 28063 // C++] 동전 복사  (2) 2023.11.25

+ Recent posts