Young

Round Robin 본문

코딩 테스트 대비 추천 문제

Round Robin

yyjjang9 2019. 3. 11. 00:50
728x90
반응형


이번 문제는 'round robin'(https://www.acmicpc.net/problem/9436) 문제 입니다. 

당분간은 '구현' 문제 위주로 업로드를 할 예정입니다.


이 문제가 좋다고 생각하는 이유는 'round robin 알고리즘에 대해서 생각해 볼 수 있고,

언뜻 보면 쉬워보이는데 막상 구현하면 막히는 문제'이기 때문입니다.


저번 LRU Caching 문제와 비슷합니다. list를 사용해서 구현하면 아주 간단히 구현할 수 있습니다.

문제가 영어라서 부담스러울 수 있지만 구현을 연습하기에 좋은 문제입니다. 


list에 대해서는 LRU 문제에서 자세히 설명했으니 생략하겠습니다.


1
2
3
4
    list<int> ls;
    for (int i = 0; i < a; i++)
        ls.push_back(0);
 
cs


우선 이렇게 list를 구성하고 


1
2
3
4
5
6
7
8
9
10
11
    int cnt = 0;
    while (1) {
        if (it == ls.end()) it = ls.begin();
        (*it) += 1;
        cnt += 1;
        if (cnt == b) {
            it = ls.erase(it);
            break;
        }
        it++;
    }
cs


이 코드에서 주목해서 봐야할 부분은 3, 7번째 줄 입니다. 

마지막에 도달하면 다시 처음으로 되돌리는 부분과 마지막으로 끝나는 부분을 지우고 다음 노드로

넘어가는 부분 입니다.

728x90
반응형

'코딩 테스트 대비 추천 문제' 카테고리의 다른 글

전공책  (0) 2019.03.12
문자 메시지  (0) 2019.03.11
LRU Caching  (0) 2019.03.10
개미  (0) 2019.03.09
CPU  (0) 2019.03.09