반응형
10845번 문제 : 큐


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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <iostream>
#include <queue>
#include <string>
using namespace std;
 
int main() {
    int num;
    cin >> num;
    queue<int> q;
 
    while (num > 0)
    {
        string inp;
        cin >> inp;
        
        if (inp == "push")
        {
            int inp2;
                cin >> inp2;
                q.push(inp2);
        }
        else if (inp == "pop")
        {
            if (!q.empty()) {
                cout << q.front() << endl;
                q.pop();
            }
            else {
                cout << "-1" << endl;
            }
        }
        else if (inp == "size")
        {
            cout << q.size() << endl;
        }
        else if (inp == "empty")
        {
            if (!q.empty()) {
                cout << "0" << endl;
            }
            else {
                cout << "1" << endl;
            }
        }
        else if (inp == "front")
        {
            if (!q.empty()) {
                cout << q.front() << endl;
            }
            else {
                cout << "-1" << endl;
            }
        }
        else if (inp == "back")
        {
            if (!q.empty()) {
                cout << q.back() << endl;
            }
            else {
                cout << "-1" << endl;
            }
        }
        else
        {
            cout << "command error: " << inp << endl;
        }
 
        num--;
    }
 
    return 0;
}
cs


1260 문제 : DFS와 BFS

https://www.acmicpc.net/problem/1260


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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
 
const int MAXSIZE = 1001;
int matrix[MAXSIZE][MAXSIZE];
bool visitedDFS[MAXSIZE];
bool visitedBFS[MAXSIZE];
int N, M, V;
vector<int> DFSresult;
vector<int> BFSresult;
 
void DFS(int v)
{
    if (visitedDFS[v] == true)
        return;
 
    visitedDFS[v] = true;
 
    DFSresult.push_back(v);
 
    for (int i = 1; i <= N; i++)
    {
        if (visitedDFS[i] == true || matrix[i][v] == 0)
            continue;
 
        DFS(i);
    }
}
 
void BFS(int v)
{
    queue<int> q;
    q.push(v);
    visitedBFS[v] = true;
 
    while (!q.empty())
    {
        v = q.front();
        BFSresult.push_back(v);
        q.pop();
        for (int i = 1; i <= N; i++)
        {
            if (visitedBFS[i] == true || matrix[i][v] == 0)
                continue;
            q.push(i);
            visitedBFS[i] = true;
        }
    }
}
 
 
int main() {
 
    cin >> N >> M >> V;
    
    for (int i = 0; i < M; i++)
    {
        int inpA, inpB;
        cin >> inpA >> inpB;
        matrix[inpA][inpB] = matrix[inpB][inpA] = 1;
    }
 
    DFS(V);
    BFS(V);
 
 
    for (auto i : DFSresult)
        cout << i << " ";
 
    cout << endl;
 
    for (auto j : BFSresult)
        cout << j << " ";
 
    return 0;
}
cs


메모:
-DFS(Depth Frist Search) 깊이 우선 탐색            BFS(Breadth First Search) 너비 우선 탐색


11866번 문제 : 조세퍼스 문제0

1158번 문제 : 조세퍼스 문제


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
42
43
44
45
46
47
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
 
int main()
{
    queue<int> q;
    vector<int> answer;
 
    int inputA, inputB;
    cin >> inputA >> inputB;
    
    for (int i = 1; i <= inputA; i++)
        q.push(i);
 
    int counter = 1;
    while (!q.empty())
    {
        int temp = q.front();
        
        if (counter == inputB)
        {
            answer.push_back(temp);
            q.pop();
            counter = 1;
        }
        else
        {
            q.pop();
            q.push(temp);
            counter++;
        }
    }
    
 
    cout << "<";
    for (int i = 0; i < answer.size(); i++)
    {
        cout << answer.at(i);
 
        if(i < answer.size() - 1)
            cout << ", ";
    }
    cout << ">";
    return 0;
}
cs


반응형

'C++ Algorithm > 백준 알고리즘 문제 풀이' 카테고리의 다른 글

이항 계수  (0) 2019.03.13
피보나치 수  (0) 2019.03.11
스택 사용하기 (기초)  (0) 2019.02.14
소수 구하기  (0) 2019.02.13
정렬해보기  (0) 2019.02.10

+ Recent posts