1. 문제 해결 전략
링크드 리스트 + 반복자 문제
그리고, 망할 출력문제이다.
#include <iostream>
#include <list>
#include <string>
using namespace std;
list<int> ans;
int main()
{
string s;
int n, k;
cin >> n >> k;
list<int> l;
for (int i = 0; i < n; i++)
{
l.push_back(i + 1);
}
auto it = l.begin();
cout << '<';
while (!l.empty())
{
for (int i = 0; i < k; i++)
{
if (it == l.end())
it = l.begin();
it++;
}
--it;
ans.push_back(*it);
it = l.erase(it);
}
int count = ans.size();
for (auto& iter : ans)
{
count--;
if (count == 0)
cout << iter;
else
cout << iter << ", ";
}
cout << ">" << endl;
return 0;
}
2. 걸린 시간
20분
3. 느낀점
앞에 링크드 리스트 문제를 풀어봐서 바로 감이 왔다. 문제의 답을 도출하는데는 5분도 안걸렸다.
다만, 꺾새 형식 출력에 아이디어가 왜 안떠올랐는지.. 이상한짓하다가 마지막에 꼼수부려 해결했다.
그래서 링크드리스트 + 출력문제라고 하고싶다.
4. 링크
https://www.acmicpc.net/problem/1158
'알고리즘 > 백준 알고리즘' 카테고리의 다른 글
[진법변환] 11005. 진법 변환2 (0) | 2020.05.01 |
---|---|
[리스트] 1168. 요세푸스 문제 2 (0) | 2020.05.01 |
[리스트] 1406. 에디터 (0) | 2020.04.30 |
[x] 10824 : 네 수 (0) | 2020.04.30 |
[스택] 9012. 괄호 (0) | 2020.04.28 |