일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 논문구현
- C언어
- 문자열
- 정렬
- 백준
- 이진탐색
- 백준알고리즘
- 소수판정
- MySQL
- 프로그래머스코딩테스트
- 브루트포스알고리즘
- 큐
- C++
- 논문리뷰
- 자료구조
- 프로그래머스연습문제
- 수학
- 이분탐색
- 구현
- 사칙연산
- SQL
- 그리디
- 해시를사용한집합과맵
- 정수론
- 프로그래머스
- 프로그래머스sql
- 다이나믹프로그래밍
- Image Classification
- C
- 그리디알고리즘
- Today
- Total
초보 개발자의 이야기, 릿허브
[C++] 백준 11866번 요세푸스 문제 0 본문
1. 문제이해
https://www.acmicpc.net/problem/11866
11866번: 요세푸스 문제 0
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)
www.acmicpc.net
1번부터 N번까지의 사람이 원을 이루며 앉아있다.
정수 K가 주어질 때, 순서대로 K번째 사람을 제거하며, 남은 사람들로 해당 과정을 반복해나간다.
N명의 사람이 모두 제거될 때까지 해당 과정을 반복할 때, 제거되는 순서를 요세푸스 순열이라고 한다.
N과 K가 주어질 때, 요세푸스 순열을 구하는 것이 목표이다.
2. 문제풀이
이전에 풀이한 백준 1158번 요세푸스 문제와 완전히 동일한 문제이다.
(백준에 동일한 문제가 이름만 살짝 틀리게 올라오다니..🤔)
풀이방법 또한 동일하니, 자세한 풀이방법은 아래 포스팅을 참고하자.
https://beginnerdeveloper-lit.tistory.com/128
[C++] 백준 1158번 요세푸스 문제
1. 문제이해 https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 1번부터 N번까지의 사람이 원을..
beginnerdeveloper-lit.tistory.com
3. 소스코드
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector <int> v;
int N, K;
int index;
cin >> N >> K;
for (int i = 1; i <= N; i++) {
v.push_back(i);
}
cout << "<";
index = (K - 1) % N;
while (!v.empty()) {
cout << v[index];
v.erase(v.begin() + index);
index += K - 1;
if (v.empty()) {
break;
}
if (index >= v.size()) {
index = index % v.size();
}
cout << ", ";
}
cout << ">";
return 0;
}
이제와서 보니 해당 문제는 큐를 사용하신 분들이 꽤나 많더라..
큐를 이용해 푸는 방법도 꽤나 간편해보이니, 조만간 한번 풀어봐야겠다.😊
문제에 대한 질문이나 지적은 언제나 감사하게 받고 있습니다.😊
'코딩테스트 > 📗 백준 (BOJ)' 카테고리의 다른 글
[C++] 백준 11728번 배열 합치기 (0) | 2022.02.22 |
---|---|
[C++] 백준1292번 쉽게 푸는 문제 (0) | 2022.02.18 |
[C++] 백준 2164번 카드2 (0) | 2022.02.15 |
[C++] 백준 2193번 이친수 (0) | 2022.02.14 |
[C++] 백준 2548번 대표 자연수 (0) | 2022.02.10 |