728x90
https://www.acmicpc.net/problem/1158
1158๋ฒ: ์์ธํธ์ค ๋ฌธ์
์ฒซ์งธ ์ค์ N๊ณผ K๊ฐ ๋น ์นธ์ ์ฌ์ด์ ๋๊ณ ์์๋๋ก ์ฃผ์ด์ง๋ค. (1 ≤ K ≤ N ≤ 5,000)
www.acmicpc.net
โญ ๋ด ์์ค ์ฝ๋
#include<iostream>
#include <vector>
using namespace std;
int main(void) {
ios::sync_with_stdio(false);
cin.tie(NULL);
int n, k,index=0;
vector<int>vec;
cin >> n >> k;
for (int i = 1; i <= n; i++) {
vec.push_back(i);
}
cout << "<";
while (1)
{
if (vec.size() == 1) {
cout << vec[0];
cout << ">";
break;
}
else {
index = (index + (k - 1)) % vec.size(); //k๋ฒ์งธ ์ธ๋ฑ์ค ๊ณ์ฐ
cout << vec[index] << ", ";
vec.erase(vec.begin() + index); //ํด๋น ์ธ๋ฑ์ค ์์ ์ ๊ฑฐ
}
}
return 0;
}
๐ ๋ฌธ์ ํ์ด
index = index + (k - 1)) % vec.size() : ํ์ฌ ์ธ๋ฑ์ค์์ k๋งํผ์ ์ธ๋ฑ์ค๋ฅผ ๋ํ๊ณ , ์ธ๋ฑ์ค๋ 0๋ถํฐ ์์์ด๋ -1๋ฅผ ํ ๋ค ๊ณ์ฐํ ์ธ๋ฑ์ค๊ฐ ๋ฒกํฐ์ ์ฌ์ด์ฆ๋ณด๋ค ํด ์๋ ์์ผ๋ ํ์ฌ ๋ฒกํฐ์ ์ฌ์ด์ฆ(vec.size())๋ก ๋๋ ๋ชซ์ ์ธ๋ฑ์ค๋ก ์ฌ์ฉํ๋ค.
vec.arease(vec.begin() + index) : ๋ฒกํฐ์์ ํน์ ์์น์ ์์ ์ ๊ฑฐ
728x90