2025.02.10 (월요일)

2559번 “수열” (실버III)

#include <iostream> //c++
#include <stdio.h> //c
#include <vector> //c++ 배열
#include <algorithm> // 탐색, 정렬 등 알고리즘
#include <utility> // 
#include <string>
#include <string.h>
#include <cmath>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <deque>
#include <cstring>

#define fio ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); // input, output 빠르게 하는 거
#define ll long long // long long이 너무 기니까 ll로 줄여요
#define pii pair<int,int> // pair<int,int>가 너무 길어요 그래서 pii로 줄여요
#define pll pair<ll,ll> // pair<long long, long long> 이 너어어어무 길어요. 그래서 pll로 줄여요
#define MOD 1e9+7 // 모듈러 계산할 때 쓰이는 값, 근데 문제마다 바뀌니까 알아서 바꾸세요

using namespace std;
int main()
{
    fio;
    int n,k;
    cin>>n>>k;
    int num;
    vector <int> v;
    for(int i=0;i<n;i++)
    {
        cin>>num;
        v.push_back(num);
    }
    
    ll sum=0;
    for(int i=0;i<k;i++)
    {
        sum+=v[i];
    }

    ll max=sum;
    for(int i=0;i<n-k;i++)
    {
        sum-=v[i];
        sum+=v[i+k];
        if(max<sum)
        {
            max=sum;
        }
    }
    cout<<max;
}

2025.02.11 (화요일)

1966번 “프린터 큐” (실버III)

#include <iostream> //c++
#include <stdio.h> //c
#include <vector> //c++ 배열
#include <algorithm> // 탐색, 정렬 등 알고리즘
#include <utility> // 
#include <string>
#include <string.h>
#include <cmath>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <deque>
#include <cstring>

#define fio ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); // input, output 빠르게 하는 거
#define ll long long // long long이 너무 기니까 ll로 줄여요
#define pii pair<int,int> // pair<int,int>가 너무 길어요 그래서 pii로 줄여요
#define pll pair<ll,ll> // pair<long long, long long> 이 너어어어무 길어요. 그래서 pll로 줄여요
#define MOD 1e9+7 // 모듈러 계산할 때 쓰이는 값, 근데 문제마다 바뀌니까 알아서 바꾸세요

using namespace std;
queue <pair<int,int>> que;
int quemax()
{
    pair<int,int> max=que.front();
    pair<int,int> imsi;
    int saize=que.size();
    for(int i=0;i<saize;i++)
    {
        if(max.first<que.front().first)
        {
            max=que.front();
        }
        imsi=que.front();
        //cout<<que.front()<<' ';
        que.pop();
        que.push(imsi);
    }
    return max.first;
}

void ppegonoko()
{
    pair<int,int> imsi;
    imsi=que.front();
    que.pop();
    que.push(imsi);
}

int main()
{
    fio;
    int l;
    cin>>l;
    vector <int> v;
    int n,m;
    pair<int,int> imsi;
    int pur;
    pair<int,int> cur;
    for(int i=0;i<l;i++)
    {
        cin>>n>>m;
        for(int j=0;j<n;j++)
        {
            cin>>imsi.first;
            imsi.second=j;
            if(j==m)
            {
                pur=imsi.second;
            }
            que.push(imsi);
        }

        while(1)
        {
            cur=que.front();
            //cout<<"cur:"<<cur<<"\\n";
            if(quemax()>cur.first)
            {
                ppegonoko();
            }
            else
            {
                v.push_back(cur.first);
                if(cur.second==pur)
                {
                    break;
                }
                que.pop();
            }
        }

        cout<<v.size()<<'\\n';
        v.clear();
        while(!que.empty())
        {
            que.pop();
        }
        //cout<<"size:"<<que.size()<<'\\n';
    }
}

2025.02.12 (수요일)

1769번 “3의 배수” (실버V)

#include <iostream> //c++
#include <stdio.h> //c
#include <vector> //c++ 배열
#include <algorithm> // 탐색, 정렬 등 알고리즘
#include <utility> // 
#include <string>
#include <string.h>
#include <cmath>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <deque>
#include <cstring>

#define fio ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); // input, output 빠르게 하는 거
#define ll long long // long long이 너무 기니까 ll로 줄여요
#define pii pair<int,int> // pair<int,int>가 너무 길어요 그래서 pii로 줄여요
#define pll pair<ll,ll> // pair<long long, long long> 이 너어어어무 길어요. 그래서 pll로 줄여요
#define MOD 1e9+7 // 모듈러 계산할 때 쓰이는 값, 근데 문제마다 바뀌니까 알아서 바꾸세요

using namespace std;
int main()
{
    fio;
    string x;
    cin>>x;
    if(x.size()==1)
    {
        if(x[0]-'0'==3 || x[0]-'0'==6 || x[0]-'0'==9)
        {
            cout<<0<<'\\n'<<"YES";
        }
        else
        {
            cout<<0<<'\\n'<<"NO";
        }
    }
    else
    {
        int j=1;
        int sum=0;
        int realsum=0;
        int imsi=1;
        int cur;
        for(int i=0;i<x.size();i++)
        {
            sum+=x[i]-'0';
        }
        for(ll i=0;(sum/10)!=0;i++)
        {
            cur=sum;
            realsum=0;
            while(cur!=0)
            {
                realsum+=cur%10;
                cur/=10;
            }
            sum=realsum;
            j++;
            if((sum/10)==0)
            {
                imsi=j;
            }
        }

        if(sum==3 || sum==6 || sum==9)
        {
            cout<<imsi<<'\\n'<<"YES";
        }
        else
        {
            cout<<imsi<<'\\n'<<"NO";
        }
        
    }
}

2025.02.13 (목요일)

2559번 “금메달, 은메달, 동메달은 누가?” (실버V)

#include <iostream> //c++
#include <stdio.h> //c
#include <vector> //c++ 배열
#include <algorithm> // 탐색, 정렬 등 알고리즘
#include <utility> // 
#include <string>
#include <string.h>
#include <cmath>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <deque>
#include <cstring>

#define fio ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); // input, output 빠르게 하는 거
#define ll long long // long long이 너무 기니까 ll로 줄여요
#define pii pair<int,int> // pair<int,int>가 너무 길어요 그래서 pii로 줄여요
#define pll pair<ll,ll> // pair<long long, long long> 이 너어어어무 길어요. 그래서 pll로 줄여요
#define MOD 1e9+7 // 모듈러 계산할 때 쓰이는 값, 근데 문제마다 바뀌니까 알아서 바꾸세요

using namespace std;
int main()
{
    fio;
    int n,m;
    cin>>n>>m;
    stack<int> degistk;
    for(int i=n;i>0;i--)
    {
        degistk.push(i);
    }
    //1차 경주 대기자 명단 저장

    int cur;
    stack<int> imsistk;
    int rank;
    stack<int> rankstk1;
    for(int i=0;i<n;i++)
    {
        cur=degistk.top();
        degistk.pop();
        cin>>rank;
        for(int j=0;j<rank-1;j++)
        {
            imsistk.push(rankstk1.top());
            rankstk1.pop();
        }
        rankstk1.push(cur);
        while(!imsistk.empty())
        {
            rankstk1.push(imsistk.top());
            imsistk.pop();
        }
    }
    //1차 경주

    for(int i=0;i<m;i++)
    {
        degistk.push(rankstk1.top());
        rankstk1.pop();
    }
    //2차 경주 대기자 명단 저장

    stack<int> rankstk2;
    for(int i=0;i<m;i++)
    {
        cur=degistk.top();
        degistk.pop();
        cin>>rank;
        for(int j=0;j<rank-1;j++)
        {
            imsistk.push(rankstk2.top());
            rankstk2.pop();
        }
        rankstk2.push(cur);
        while(!imsistk.empty())
        {
            rankstk2.push(imsistk.top());
            imsistk.pop();
        }
    }
    //2차 경주

    for(int i=0;i<3;i++)
    {
        cout<<rankstk2.top()<<'\\n';
        rankstk2.pop();
    }
    //최종 결과
}

2025.02.14 (금요일)

2491번 “수열” (실버IV)

#include <iostream> //c++
#include <stdio.h> //c
#include <vector> //c++ 배열
#include <algorithm> // 탐색, 정렬 등 알고리즘
#include <utility> // 
#include <string>
#include <string.h>
#include <cmath>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <deque>
#include <cstring>

#define fio ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); // input, output 빠르게 하는 거
#define ll long long // long long이 너무 기니까 ll로 줄여요
#define pii pair<int,int> // pair<int,int>가 너무 길어요 그래서 pii로 줄여요
#define pll pair<ll,ll> // pair<long long, long long> 이 너어어어무 길어요. 그래서 pll로 줄여요
#define MOD 1e9+7 // 모듈러 계산할 때 쓰이는 값, 근데 문제마다 바뀌니까 알아서 바꾸세요

using namespace std;
int main()
{
    fio;
    int n;
    cin>>n;
    if(n==1)
    {
        cout<<1;
        return 0;
    }
    int a[n];
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }

    int plus=1;
    int minus=1;
    int max=2;
    for(int i=0;i<n-1;i++)
    {
        if(a[i]>a[i+1])
        {
            plus=1;
            minus++;
            if(max<minus)
            {
                max=minus;
            }
        }
        else if(a[i]<a[i+1])
        {
            minus=1;
            plus++;
            if(max<plus)
            {
                max=plus;
            }
        }
        else if(a[i]==a[i+1])
        {
            plus++;
            minus++;
            if(max<minus)
            {
                max=minus;
            }
            if(max<plus)
            {
                max=plus;
            }
        }
    }
    cout<<max;
}