#include <string>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
 
int solution(vector<int> priorities, int location) 
{
    queue<pair<intint>> q;
    
    // 우선순위, 인덱스
    for(int i = 0; i < priorities.size(); i++)
    {
        q.push({priorities[i], i});
    }
    
    // 최댓값을 구하기 위해 정렬
    sort(priorities.begin(), priorities.end());
    
    int cnt = 1;
    while(!q.empty())
    {
        int cmp = q.front().first;
        int cmpIdx = q.front().second;
        
        // 맨 앞 대기목록이 쵀댓값이 아닌 경우, 맨 뒤로
        if(cmp < priorities[priorities.size()-1])
        {
            pair<intint> temp = q.front();
            q.pop();
            q.push(temp);
        }
        // 맨 앞 대기목록이 최댓값인 경우
        else
        {
            // 찾는 location인 경우
            if(cmpIdx == location)
            {
                break;
            }
            // 찾는 location이 아닌 경우
            else
            {
                q.pop();
                priorities.pop_back();
                cnt++;
            }
        }
    }
    
    return cnt;
}
cs
#include <string>
#include <vector>
using namespace std;
 
vector<int> solution(vector<int> heights) 
{
    vector<int> answer;
    vector<int> reverse_answer;
    
    // 거꾸로 대입(뒤 -> 앞)
    for(int i = heights.size()-1; i > 0; i--)
    {
        int flag = 0;
        for(int j = i-1; j >= 0; j--)
        {
            if(heights[i] < heights[j])
            {
                flag = 1;
                reverse_answer.push_back(j+1);
                break;
            }   
        }
        
        if(flag == 0)
        {
            reverse_answer.push_back(0);
        }
    }
    // 첫번째는 무조건 0 대입
    reverse_answer.push_back(0);
    
    // 거꾸로 대입했기 때문에 다시 reverse
    for(int i = reverse_answer.size()-1; i >= 0; i--)
    {
        answer.push_back(reverse_answer[i]);
    }
    
    return answer;
}
cs
#include <string>
#include <vector>
using namespace std;
 
string solution(int n) 
{
    string answer = "";
    string num = to_string(n);
    char pattern[3= {'4''1''2'};
    int digit[100];
    int cnt = 0;
    
    for(int i = 0; n > 0; i++)
    {
        digit[i] = n % 3;
        n /= 3;
        cnt++;
        
        if(digit[i] == 0)
        {
            n--;
        }
        
        answer = pattern[digit[i]] + answer;
    }
    
    // for(int i = cnt-1; i >= 0; i--)
    // {
    //     answer += pattern[digit[i]];
    // }
 
    return answer;
}
cs
#include <string>
#include <vector>
using namespace std;
 
vector<int> solution(vector<int> prices) 
{
    vector<int> answer;
    
    for(int i = 0; i < prices.size()-1; i++)
    {
        int changeIdx;
        for(int j = i+1; j < prices.size(); j++)
        {
            // 떨어지는 경우
            if(prices[i] > prices[j])
            {
                changeIdx = j;
                break;
            }
            
            // 끝까지 가격이 떨어지지 않는 경우
            if(j == prices.size()-1)
            {
                changeIdx = j;
            }
        }
        
        answer.push_back(changeIdx-i);
    }
    
    // 마지막은 무조건 0초 동안 떨어지지 않음
    answer.push_back(0);
    
    return answer;
}
cs
#include <string>
#include <vector>
using namespace std;
 
vector<int> solution(vector<int> progresses, vector<int> speeds) 
{
    vector<int> answer;
    int visited[100= {0};
    
    while(1)
    {
        int cnt = 0;
        
        for(int i = 0; i < progresses.size(); i++)
        {
            progresses[i] += speeds[i];
        }        
        
        for(int i = 0; i < progresses.size(); i++)
        {
            if(progresses[i] >= 100 && visited[i] == 0)
            {
                visited[i] = 1;
                cnt++;
            }
            else if(progresses[i] >= 100 && visited[i] == 1)
            {
                continue;
            }
            else
            {
                break;
            }
        }
        
        if(cnt >= 1)
        {
            answer.push_back(cnt);   
        }
        
        int flag = 0;
        for(int i = 0; i < progresses.size(); i++)
        {
            if(visited[i] == 0)
            {
                flag = 1;
                break;
            }
        }
        
        if(flag == 0)
        {
            break;
        }
    }
 
    return answer;
}
cs
#include <string>
#include <vector>
using namespace std;
 
int solution(string skill, vector<string> skill_trees) 
{
    int answer = 0;
    
    for(int i = 0; i < skill_trees.size(); i++)
    {
        string check;
        
        for(int j = 0; j < skill_trees[i].size(); j++)
        {
            for(int k = 0; k < skill.size(); k++)
            {
                // 스킬에서 찾은 경우
                if(skill_trees[i][j] == skill[k])
                {
                    check += skill_trees[i][j];
                    break;
                }
            }
        }
        
        // 순서 확인
        int flag = 0;
        for(int j = 0; j < check.size(); j++)
        {
            if(check[j] != skill[j])
            {
                flag = 1;
                break;
            }
        }
        
        if(flag == 0)
        {
            answer++;
        }
    }
    
    return answer;
}
cs
#include <iostream>
using namespace std;
 
int main(void
{
    int row, col;
    cin >> col >> row;
    
    for(int i = 0; i < row; i++)
    {
        for(int j = 0; j < col; j++)
        {
            cout << "*";
        }
        cout << "\n";
    } 
    
    return 0;
}
cs
#include <string>
#include <vector>
using namespace std;
 
vector<long long> solution(int x, int n) 
{
    vector<long long> answer;
    
    for(int i = 1; i <= n; i++)
    {
        long long num = x * i;
        answer.push_back(num);
    }
    
    return answer;
}
cs

+ Recent posts