Search
moon
sun
📗

요세푸스 문제

주차
문제번호
1158
언어
C++
티어
실버
유형
구현
자료구조
nj_Blog
nj_상태
이해도
100%
풀이
사람
이해도 2
13 more properties

문제접근🤔

벡터를 -1 로 초기화하고 벡터를 하나씩 순회하면서 k번째가 되었을때 출력하고 그 원소는 0, 다만 벡터 원소의 값이 0인 경우에는 k번째로 카운팅을 하지 않고 다음 진행
idx는 k번째를 출력하기 위한 변수
i는 포인터 역할

놓쳤던 부분😅

queue로 k번째 일때까지 계속 pop,push를 하다가 k번째에서는 front로 출력하면됨

코드😁

2160 KB

1924 ms

#include <iostream> #include <vector> using namespace std; int main(void) { int n,k; vector<int> p; int cnt = 0; int idx; ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n >> k; p.resize(n, -1); cout << "<"; idx = 1; for (int i = 0; cnt < n; i = (i + 1) % n, idx++) { if (p[i] == 0) { idx--; continue ; } if (idx == k) { idx = 0; p[i] = 0; cnt++; cout << i + 1; if (cnt == n) cout << ">"; else cout << ", "; } } return (0); }
C++
복사