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 <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
#include <stdio.h>
#include <iostream>
#include <set>
#include <map>
#include <queue>
#include <vector>
#include <string>
#include <math.h>
#include <algorithm>
using namespace std;
 
string s;
int cnt0, cnt1;
 
int main(void)
{
//    freopen("B1439_input.txt", "r", stdin);
    
    cin >> s;
    
    for(int i = 0; i < s.size(); i++)
    {
        if(s[i] == '1' && s[i] != s[i+1])
        {
            cnt1++;
        }
        else if(s[i] == '0' && s[i] != s[i+1])
        {
            cnt0++;
        }
    }
    
    cout << min(cnt1, cnt0);
    
    return 0;
}
cs
#include <stdio.h>
#include <iostream>
#include <set>
#include <map>
#include <queue>
#include <vector>
#include <string>
#include <math.h>
#include <algorithm>
using namespace std;
 
int N;
long long num[2010];
int Left, Right;
int ans;
 
int main(void)
{
//    freopen("B1253_input.txt", "r", stdin);
    
    cin >> N;
    
    for(int i = 1; i <= N; i++)
    {
        cin >> num[i];
    }
    
    sort(num+1, num+N+1);
    
    for(int i = 1; i <= N; i++)
    {
        long long find = num[i];
        Left = 1;
        Right = N;
        
        // 투포인터 알고리즘 활용 
        while(Left < Right)
        {    
            if(num[Left] + num[Right] == find)
            {
                // find는 서로 다른 두 수의 합이여야됨을 체크 
                if(Left != i && Right != i)
                {
                    ans++;
                    break;    
                }
                else if(Left == i)
                {
                    Left++;
                }
                else if(Right == i)
                {
                    Right--;
                }
            }
            else if(num[Left] + num[Right] < find)
            {
                Left++;
            }
            else
            {
                Right--;
            } 
        }
    }
    
    cout << ans;
    
    return 0;
}
cs
#include <stdio.h>
#include <iostream>
#include <set>
#include <map>
#include <queue>
#include <vector>
#include <string>
#include <math.h>
#include <algorithm>
using namespace std;
 
int N, S;
int num[21];
int choice[21];
int ans;
 
int check(int cnt)
{
    int sum = choice[0];
    
    for(int i = 1; i < cnt; i++)
    {
        sum += choice[i];
    }
    
    if(sum == S)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
 
 
void combination(int idx, int cnt)
{
    if(cnt > N)
    {
        return;
    }
    else if(cnt != 0)
    {
        if(check(cnt) == 1)
        {
            ans++;
        }
    }
    
    for(int i = idx; i < N; i++)
    {
        choice[cnt] = num[i];
        combination(i+1, cnt+1);
    }
}
 
int main(void)
{
//    freopen("B1182_input.txt", "r", stdin);
    
    cin >> N >> S;
    
    for(int i = 0; i < N; i++)
    {
        cin >> num[i];
    }
    
    combination(00);
    
    cout << ans;
    
    return 0;
}
cs

'Baekjoon > etc' 카테고리의 다른 글

[백준 1439] 뒤집기 (C/C++)  (0) 2019.12.30
[백준 1253] 좋다 (C/C++)  (0) 2019.12.30
[백준 1145] 적어도 대부분의 배수 (C/C++)  (0) 2019.12.18
[백준 1065] 한수 (C/C++)  (0) 2019.12.18
[백준 1024] 수열의 합 (C/C++)  (0) 2019.12.17
#include <stdio.h>
#include <iostream>
#include <set>
#include <map>
#include <queue>
#include <vector>
#include <string>
#include <math.h>
#include <algorithm>
using namespace std;
 
int num[5];
int Min = 1;
 
int main(void)
{
//    freopen("B1145_input.txt", "r", stdin);
    
    for(int i = 0; i < 5; i++)
    {
        cin >> num[i];
    }
    
    while(1)
    {
        int cnt = 0;
        
        for(int i = 0; i < 5; i++)
        {
            if(Min >= num[i] && Min % num[i] == 0)
            {
                cnt++;
            }
        }
        
        if(cnt >= 3)
        {
            break;
        }
        
        Min++;
    }
    
    cout << Min;
    
    return 0;
}
cs

'Baekjoon > etc' 카테고리의 다른 글

[백준 1253] 좋다 (C/C++)  (0) 2019.12.30
[백준 1182] 부분수열의 합 (C/C++)  (0) 2019.12.18
[백준 1065] 한수 (C/C++)  (0) 2019.12.18
[백준 1024] 수열의 합 (C/C++)  (0) 2019.12.17
[백준 1015] 수열 정렬 (C/C++)  (0) 2019.12.17

+ Recent posts