컴굥일지
[BOJ/백준 1158][C++] 요세푸스 문제 본문
반응형
백준 1158 요세푸스 문제
문제 링크
https://www.acmicpc.net/problem/1158
문제 내용
1~N명의 사람이 원형으로 앉아있고, 순서대로 K번째 사람을 제거한다. 연속적으로 제거하기 위해 vector를 사용했다.
코드
#include <iostream>
#include <vector>
using namespace std;
int main() {
ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int n, k;
cin >> n >> k; //입력
vector<int>v(n);
for (int i = 0; i < n; i++) v[i]=i+1;
vector<int>::iterator it;
int index=0;
cout << "<";
while(v.size()>1) {
index = (index + k - 1) % v.size(); //제거할 위치 찾기
cout << v[index] << ", ";
it = v.begin() + index;
v.erase(it); //제거
}
index = (index + k - 1) % v.size();
cout << v[index] << ">\n";
return 0;
}
느낀점
C++로 알고리즘 공부를 시작한 것이 얼마되지 않아서 아직 벡터 사용법을 잘 모르겠다.
vector<int>::iterator it; 이 코드를 쓰는 것이 약간 어색했다
반응형
'알고리즘 > 코테 문제' 카테고리의 다른 글
[BOJ/백준 2993][C++] 세 부분 (0) | 2021.07.11 |
---|---|
[BOJ/백준 1008][C++] A/B (0) | 2021.07.11 |
[BOJ/백준 1547][C++] 공 (0) | 2021.07.11 |
[BOJ/백준 10804][C++] 카드 역배치 (0) | 2021.07.11 |
[BOJ/백준 15552][C++] 빠른 A+B (0) | 2021.07.11 |
Comments