언유상씨의 건전한 취미생활

[백준 알고리즘] 영식이와 친구들(1592번) C++로 풀기 본문

건전한 취미생활 - 알고리즘

[백준 알고리즘] 영식이와 친구들(1592번) C++로 풀기

언유상 2020. 5. 13. 20:30

문제 이름 : 영식이와 친구들

문제 번호 : 1592

사용 언어 : C++

 

문제는 다음과 같다.

 

 

시간이 넉넉해서 풀기에 어렵지 않은 문제이다.

베열을 만들어 놓고, 돌아가면서 하나씩 선택하면된다.

각 사람이 몇번 받았는지를 확인하면서 진행하면 된다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <utility>
#include <cmath>
 
using namespace std;
 
int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
    int n, m, l, k = 0;
    int cnt = 0;
    cin >> n >> m >> l;
    int* p = (int*)malloc(n * sizeof(int));
    for (int i = 0; i < n; i++) p[i] = 0// 배열 초기화
    while (1) {
        p[k]++;
        if (p[k] == m)
            break;
        else if (p[k] % 2) { // 홀수번 받은 경우     
            cnt++;
            if (k + l < n) // 번호를 넘어가지 않는 경우
                k += l;
            else // 번호를 넘어가는 경우
                k = (k + l) - n;
        }
        else { // 짝수번 받은 경우
            cnt++;
            if (k - l >= 0// 번호를 넘어가지 않는 경우
                k -= l;
            else // 번호를 넘어가는 경우
                k = n + (k - l);
        }
    }
    
   cout << cnt;
    return 0;
}
 
cs

 

 

 

Comments