#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <map>
#include <string>
#include <vector>
#include <queue>
using namespace std;
 
int test;
vector<int> v;
vector<int> choice;
vector<int> reserve;
 
// 유클리드 호제법 
int gcd(int a, int b)
{
    if(b == 0)
    {
        return a;
    }
    else
    {
        return gcd(b, a%b);
    }
}
 
void DFS(int idx, int cnt)
{
    if(cnt == 2)
    {
        int GCD = gcd(choice[0], choice[1]);
        
        reserve.push_back(GCD);
        
        return;
    }
    
    for(int i = idx; i < v.size(); i++)
    {
        choice.push_back(v[i]);
        DFS(i+1, cnt+1);
        choice.pop_back();
    }
}
 
int main(void)
{
//    freopen("B9613_input.txt", "r", stdin);
    
    cin >> test;
    
    for(int T = 1; T <= test; T++)
    {
        v.clear();
        reserve.clear();
        
        int N;
        cin >> N;
        
        for(int i = 1; i <= N; i++)
        {
            int num;
            cin >> num;
            
            v.push_back(num);
        }
        
        DFS(00);
        
        long long sum = 0;
        for(int i = 0; i < reserve.size(); i++)
        {
            sum += reserve[i];
        }
        
        cout << sum << endl;
    }
    
    return 0;
}
cs
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <map>
#include <string>
#include <vector>
#include <queue>
using namespace std;
 
int A, B;
 
// 유클리드 호제법 
int gcd(int a, int b)
{
    if(b == 0)
    {
        return a;
    }
    else
    {
        return gcd(b, a%b);
    }
}
 
int main(void)
{
//    freopen("B10430_input.txt", "r", stdin);
    
    cin >> A >> B;
    
    int GCD = gcd(A, B);
    int LCD = A * B / GCD;
    
    cout << GCD << endl;
    cout << LCD << endl;
    
    return 0;
}
cs
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <map>
#include <string>
#include <vector>
#include <queue>
using namespace std;
 
int N, K;
queue<int> q;
 
int main(void)
{
//    freopen("B1158_input.txt", "r", stdin);
    
    cin >> N >> K;
    
    for(int i = 1; i <= N; i++)
    {
        q.push(i);
    }
    
    cout << "<";
    while(!q.empty())
    {
        if(q.size() == 1)
        {
            cout << q.front() << ">";
            q.pop();
            
            break;
        }
        
        int cnt = 1;
        
        while(cnt != K)
        {
            int temp = q.front();
            q.pop();
            q.push(temp);
            
            cnt++;    
        }
        
        if(cnt == K)
        {
            cout << q.front() << ", ";
            q.pop();
        }
    }
    
    return 0;
}
cs

1.

#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <map>
#include <string>
#include <vector>
#include <list>
using namespace std;
 
string s;
int commandNum;
list<char> l;
 
int main(void)
{
//    freopen("B1406_input.txt", "r", stdin);
 
    cin >> s >> commandNum;
    
    for(int i = 0; i < s.size(); i++)
    {
        l.push_back(s[i]);
    }
    
    // 커서 생성 
    auto cur = l.end();
    
    for(int i = 1; i <= commandNum; i++)
    {
        char command;
        cin >> command;
        
        if(command == 'P')
        {
            char data;
            cin >> data;
            
            l.insert(cur, data);
        }
        else if(command == 'L')
        {
            if(cur != l.begin())
            {
                cur--;    
            }
        }
        else if(command == 'D')
        {
            if(cur != l.end())
            {
                cur++;
            }
        }
        else if(command == 'B')
        {
            if(cur != l.begin())
            {
                cur--;
                cur = l.erase(cur);
            }
        }
    }
    
    for(auto i = l.begin(); i != l.end(); i++)
    {
        cout << *i;
    }
    
    return 0;
}
cs

 

2.

#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <map>
#include <string>
#include <vector>
#include <stdlib.h>
using namespace std;
 
typedef struct node
{
    struct node *prev;
    struct node *next;
    char data;
}node;
 
node *head = NULL;
node *cur = NULL;
 
string s;
int commandNum;
 
void insert(char data)
{
    node *newNode = (node*)malloc(sizeof(node)*1);
    newNode->data = data;
    newNode->prev = NULL;
    newNode->next = NULL;
    
    if(head->next == NULL)
    {
        head->next = newNode;
        newNode->prev = head;
        
        cur = newNode;
    }
    else if(cur->next == NULL)
    {
        newNode->prev = cur;
        cur->next = newNode;
 
        cur = newNode;
    }
    // 중간에 삽입할 경우 
    else if(cur->next != NULL)
    {
        newNode->next = cur->next;
        cur->next->prev = newNode;
        
        cur->next = newNode;
        newNode->prev = cur;
        
        cur = newNode;
    }
}
 
void left()
{
    if(cur->prev != NULL)
    {
        cur = cur->prev;
    }
}
 
void right()
{
    if(cur->next != NULL)
    {
        cur = cur->next;
    }
}
 
void del()
{
    if(cur != head)
    {
        cur->prev->next = cur->next;
        
        // 중간에 삭제하는 경우 
        if(cur->next != NULL)
        {
            cur->next->prev = cur->prev;
        }
        else
        {
            cur->next = NULL;
        }
        
        cur = cur->prev;
    }
}
 
int main(void)
{
//    freopen("B1406_input.txt", "r", stdin);
    
    head = (node*)malloc(sizeof(node)*1);
    head->next = NULL;
    head->prev = NULL;
    
    cin >> s >> commandNum;
    
    for(int i = 0; i < s.size(); i++)
    {
        insert(s[i]);
    }
    
    for(int i = 1; i <= commandNum; i++)
    {
        char command;
        cin >> command;
        
        if(command == 'P')
        {
            char data;
            cin >> data;
            
            insert(data);
        }
        else if(command == 'L')
        {
            left();    
        }
        else if(command == 'D')
        {
            right();
        }
        else if(command == 'B')
        {
            del();
        }
    }
    
    cur = head->next;
    while(cur != NULL)
    {
        cout << cur->data;
        
        cur = cur->next;
    }
    
    return 0;
}
cs

#include <list>

1. 기본형

  • list<data type> : 저장할 원소의 type 선언

2. 반복자(iterator)

  • begin() : beginning iterator를 반환
  • end() : end iterator를 반환

3. 추가 / 삭제

  • push_front(element) : 리스트 제일 앞에 원소 추가
  • push_back(element) : 리스트 제일 뒤에 원소 추가
  • pop_front() : 리스트 제일 앞에 원소 삭제
  • pop_back() : 리스트 제일 뒤에 원소 삭제
  • insert(iterator, element) : iterator가 가리키는 부분 "앞"에 원소 추가
  • erase(iterator) : iterator가 "가리키는 부분"의 원소 삭제

4. 조회

  • *iterator : iterator가 가리키는 원소에 접근
  • front() : 첫번째 원소 반환
  • back() : 마지막 원소 반환

5. 기타

  • empty() : 리스트가 비어있으면 true 아니면 false를 반환
  • size() : 리스트 원소들의 수를 반환

 

#include <iostream>
#include <list>
using namespace std;
 
int main()
{
 
    list<int> l;
 
 
    // push_back
    l.push_back(5);
    l.push_back(6);
    l.push_back(7);
    l.push_back(8);
    l.push_back(9);
    l.push_back(10);
 
 
    // pop_back
    l.pop_back();
 
 
    // push_front
    l.push_front(4);
    l.push_front(3);
    l.push_front(1);
    l.push_front(0);
 
 
    // pop_front
    l.pop_front();
 
 
    // back and front
    cout << "list front value : " << l.front() << '\n';
    cout << "list end value : " << l.back() << '\n';
 
 
    // size
    cout << "list size : " << l.size() << '\n';
 
 
    // empty
    cout << "Is it empty? : " << (l.empty() ? "Yes" : "No"<< '\n';
 
 
    // iterator
    list<int>::iterator begin_iter = l.begin(); // auto begin_iter = l.begin()도 가능
    list<int>::iterator end_iter = l.end(); // auto end_iter = l.end()도 가능
 
 
    // insert
    begin_iter++// 2번째를 가리키는 iterator
    l.insert(begin_iter, 2);
 
 
    // erase
    // end_iter이 l.end()를 가리키고 있기때문에 "--" 연산을 꼭 해야 마지막 원소를 가리킬수 있음 
    end_iter--// 마지막 원소를 가리키는 iterator
    l.erase(end_iter);
 
 
    // *iterator : 원소 접근
    cout << "element list : ";
    for(auto i = l.begin(); i != l.end(); i++)
    {
        cout << *<< " ";
    }
 
    return 0;
 
}
cs

 

출처 :

https://twpower.github.io/78-how-to-use-list-in-cpp

#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <map>
#include <string>
#include <vector>
using namespace std;
 
int N;
int Max;
long long MaxNum;
map<long longint> counting;
vector<long long> reserve;
 
int main(void)
{
//    freopen("B11652_input.txt", "r", stdin);
    
    cin >> N;
    
    for(int i = 1; i <= N; i++)
    {
        long long temp;
        cin >> temp;
        
        if(counting[temp] == 0)
        {
            reserve.push_back(temp);
            counting[temp] = 1;
        }
        else
        {
            counting[temp]++;
        }
    }
    
    sort(reserve.begin(), reserve.end());
        
    for(int i = 0; i < reserve.size(); i++)
    {
        if(counting[reserve[i]] > Max)
        {
            Max = counting[reserve[i]];
            MaxNum = reserve[i];
        }
    }
    
    cout << MaxNum;
    
    return 0;
}
cs
#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;
 
int N;
pair<intint> dot[100010];
 
bool cmp(pair<intint> a, pair<intint> b)
{
    if(a.first < b.first)
    {
        return true;
    }
    else if(a.first == b.first)
    {
        if(a.second < b.second)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    else
    {
        return false;
    }
}
 
int main(void)
{
//    freopen("B11650_input.txt", "r", stdin);
    
    scanf("%d"&N);
    
    for(int i = 0; i < N; i++)
    {
        scanf("%d %d"&dot[i].first, &dot[i].second);
    }
 
    sort(dot, dot+N, cmp);
    
    for(int i = 0; i < N; i++)
    {
        printf("%d %d\n", dot[i].first, dot[i].second);
    }
    
    return 0;
}
cs
#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;
 
int N;
pair<intint> dot[100010];
 
bool cmp(pair<intint> a, pair<intint> b)
{
    if(a.second < b.second)
    {
        return true;
    }
    else if(a.second == b.second)
    {
        if(a.first < b.first)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    else
    {
        return false;
    }
}
 
int main(void)
{
//    freopen("B11651_input.txt", "r", stdin);
    
    scanf("%d"&N);
    
    for(int i = 0; i < N; i++)
    {
        scanf("%d %d"&dot[i].first, &dot[i].second);
    }
 
    sort(dot, dot+N, cmp);
    
    for(int i = 0; i < N; i++)
    {
        printf("%d %d\n", dot[i].first, dot[i].second);
    }
    
    return 0;
}
cs

+ Recent posts