#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
 
int solution(vector<vector<int>> board)
{
    if(board.size() == 1 || board[0].size() == 1)
    {
        for(int i = 0; i < board.size(); i++)
        {
            for(int j = 0; j < board[0].size(); j++)
            {
                if(board[i][j] == 1)
                {
                    return 1;
                }
            }
        }
        
        return 0;
    }
    else
    {
        int MaxLen = 0;
        
        for(int i = 1; i < board.size(); i++)
        {
            for(int j = 1; j < board[i].size(); j++)
            {
                if(board[i][j])
                {
                    board[i][j] = min({board[i-1][j-1], board[i-1][j], board[i][j-1]}) + 1;
                }
 
                if(MaxLen < board[i][j])
                {
                    MaxLen = board[i][j];
                }
            }
        }
        
        return MaxLen * MaxLen;       
    }
}
cs
#include <string>
#include <vector>
using namespace std;
 
vector<vector<int>> answer;
 
void hanoi(int num, int from, int by, int to)
{
    // 1번판(마지막 원판) -> 3번판
    if(num == 1)
    {
        vector<int> temp;
        temp.push_back(from);
        temp.push_back(to);
        answer.push_back(temp);
        
        return;
    }
    
    // 1번판 -> 2번판
    hanoi(num-1, from, to, by);
    
    // 1번판 -> 3번판
    vector<int> temp;
    temp.push_back(from);
    temp.push_back(to);
    answer.push_back(temp);
    
    // 2번판 -> 3번판
    hanoi(num-1, by, from, to);
}
 
vector<vector<int>> solution(int n) 
{
    hanoi(n, 123);
    
    return answer;
}
cs
#include <iostream>
#include <string>
#include <vector>
#include <map>
using namespace std;
 
vector<string> solution(vector<string> record) 
{
    vector<string> answer;
    vector<pair<stringstring>> temp;
    map<stringstring> reserve;
    
    for(int i = 0; i < record.size(); i++)
    {
        if(record[i][0== 'E')
        {
            int j;
            string id;
            for(j = 6; record[i][j] != ' '; j++)
            {
                id += record[i][j];
            }
            
            string nickname;
            for(int k = j+1; k < record[i].size(); k++)
            {
                nickname += record[i][k];
            }
            
            reserve[id] = nickname;
            temp.push_back({id, "E"});
        }
        else if(record[i][0== 'L')
        {
            int j;
            string id;
            for(j = 6; j < record[i].size(); j++)
            {
                id += record[i][j];
            }
            
            temp.push_back({id, "L"});
        }
        else if(record[i][0== 'C')
        {
            int j;
            string id;
            for(j = 7; record[i][j] != ' '; j++)
            {
                id += record[i][j];
            }
            
            string nickname;
            for(int k = j+1; k < record[i].size(); k++)
            {
                nickname += record[i][k];
            }
            
            reserve[id] = nickname;
        }
    }
    
    for(int i = 0; i < temp.size(); i++)
    {
        string result;
        result += reserve[temp[i].first];
        
        if(temp[i].second == "E")
        {
            result += "님이 들어왔습니다.";   
        }
        else if(temp[i].second == "L")
        {
            result += "님이 나갔습니다.";   
        }
        
        answer.push_back(result);
    }
    
    return answer;
}
cs
#include <vector>
using namespace std;
 
int solution(vector<int> nums)
{
    int answer = 0;
    int visited[200010= {0};
    
    for(int i = 0; i < nums.size(); i++)
    {
        if(answer == nums.size()/2)
        {
            break;
        }
        
        if(visited[nums[i]] == 0)
        {
            visited[nums[i]] = 1;
            answer++;
        }
    }
    
    return answer;
}
cs
#include <vector>
#include <iostream>
#include <math.h>
using namespace std;
 
vector<int> input;
int result[3];
int answer;
 
bool is_prime()
{
    int n = result[0]+result[1]+result[2];
    
    for(int i = 2; i <= sqrt(n); i++)
    {
        if(n % i == 0)
        {
            return false;
        }
    }
    
    return true;
}
 
void DFS(int idx, int cnt)
{
    if(cnt == 3)
    {
        if(is_prime())
        {
            answer++;
        }
        
        return;
    }
    
    for(int i = idx; i < input.size(); i++)
    {
        result[cnt] = input[i];
        DFS(i+1, cnt+1);
    }
}
 
int solution(vector<int> nums) 
{
    input = nums;
    
    DFS(00);
 
    return answer;
}
cs
#include <string>
#include <vector>
#include <iostream>
#include <map>
using namespace std;
 
vector<int> solution(int n, vector<string> words) 
{
    vector<int> answer;
    map<stringint> visited;
    int people = 0;
    int peopleTurn = 0;
    bool flag = false;
    
    for(int i = 0; i < words.size(); i++)
    {
        if(visited[words[i]] == 0)
        {   
            if(i == 0)
            {
                visited[words[i]] = 1;
                continue;
            }
            else
            {
                char last = words[i-1][words[i-1].size()-1];
                
                // 단어를 잘못 말한 경우
                if(last != words[i][0])
                {
                    if((i+1) % n == 0)
                    {
                        people = n;
                        peopleTurn = (i+1/ n;
                    }
                    else
                    {
                        people = (i+1) % n;
                        peopleTurn = (i+1/ n + 1;
                    }
                    
                    flag = true;
                    break;
                }
                else
                {
                    visited[words[i]] = 1;
                }
            }
        }
        // 나온 단어를 다시 말한 경우
        else
        {
            if((i+1) % n == 0)
            {
                people = n;
                peopleTurn = (i+1/ n;
            }
            else
            {
                people = (i+1) % n;
                peopleTurn = (i+1/ n + 1;
            }
            
            flag = true;
            break;
        }
    }
    
    if(flag)
    {
        answer.push_back(people);
        answer.push_back(peopleTurn);   
    }
    else
    {
        answer.push_back(0);
        answer.push_back(0);   
    }
 
    return answer;
}
cs

1.

#include <string>
#include <vector>
#include <iostream>
using namespace std;
 
string solution(string s) 
{
    string answer = "";
 
    for(int i = 0; i < s.size(); i++)
    {
        if(s[i] == ' ')
        {
            answer += s[i];
            continue;
        }
        else
        {
            // 공백 이후 첫문자 or 맨 첫문자
            if(s[i-1== ' ' || i == 0)
            {
                // 첫문자가 소문자인 경우 -> 대문자
                if('a' <= s[i] && s[i] <= 'z')
                {
                    s[i] = s[i]-'a'+'A';
                }
            }
            // 이어지는 문자가 대문자인 경우 -> 소문자
            else
            {
                if('A' <= s[i] && s[i] <= 'Z')
                {
                    s[i] = s[i]-'A'+'a';
                }
            }
        }
        
        answer += s[i];
    }
    
    return s;
}
cs

 

 

2.

#include <string>
#include <vector>
#include <iostream>
using namespace std;
 
string solution(string s) 
{
    bool flag = true;
 
    for(int i = 0; i < s.size(); i++)
    {
        if(flag)
        {
            // 공백 이후 첫문자가 소문자인 경우 -> 대문자로 변경
            if('a' <= s[i] && s[i] <= 'z')
            {
                s[i] = s[i]-'a'+'A';
            }
            
            flag = false;
        }
        else
        {
            // 이어지는 문자가 대문자인 경우 -> 소문자로 변경
            if('A' <= s[i] && s[i] <= 'Z')
            {
                s[i] = s[i]-'A'+'a';
            }
        }
        
        if(s[i] == ' ')
        {
            flag = true;
        }
    }
    
    return s;
}
cs
#include <string>
#include <vector>
#include <iostream>
using namespace std;
 
vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) 
{
    vector<vector<int>> answer;
    
    for(int i = 0; i < arr1.size(); i++)
    {
        vector<int> temp; 
        
        for(int k = 0; k < arr2[0].size(); k++)
        {
            int sum = 0;   
            
            for(int j = 0; j < arr1[i].size(); j++)
            {     
                sum += arr1[i][j] * arr2[j][k];
            }   
            
            temp.push_back(sum);
        }
        
        answer.push_back(temp);
    }
    
    return answer;
}
cs

+ Recent posts