#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
#include <stdio.h>
#include <iostream>
#include <set>
#include <map>
#include <queue>
#include <vector>
#include <string>
#include <math.h>
#include <algorithm>
using namespace std;
 
string num;
 
int main(void)
{
//    freopen("B1065_input.txt", "r", stdin);
    
    cin >> num;
    
    if(num.size() <= 2)
    {
        cout << num << endl;
    }
    else
    {
        int ans = 99;
        
        for(int i = 100; i <= stoi(num); i++)
        {
            string tempNum = to_string(i);
            int diff = tempNum[0]-tempNum[1];
            bool flag = true;
            
            for(int j = 0; j < tempNum.size()-1; j++)
            {
                if(tempNum[j]-tempNum[j+1!= diff)
                {
                    flag = false;
                    break;
                }
            }
            
            if(flag == true)
            {
                ans++;
            }
        }
        
        cout << ans << endl;
    }
    
    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; 
int dice[7];
long long Min1 = 9999;
long long Min2 = 9999;
long long Min3 = 9999;
int check2[7];
int check3[7];
 
void Min_1()
{
    for(int i = 1; i <= 6; i++)
    {
        if(dice[i] < Min1)
        {
            Min1 = dice[i];
        }
    }
}
 
void Min_2(long long sum, int idx, int cnt)
{
    if(cnt == 2
    {
        if(sum < Min2)
        {
            Min2 = sum;
        }
        
        return;
    }
    
    for(int i = idx; i <= 6; i++)
    {
        if(check2[abs(7-i)] == 1)
        {
            continue;
        }
        
        check2[i] = 1;
        Min_2(sum+dice[i], i+1, cnt+1);
        check2[i] = 0;
    }
 
void Min_3(int sum, int idx, int cnt)
{
    if(cnt == 3
    {
        if(sum < Min3)
        {
            Min3 = sum;
        }
        
        return;
    }
    
    for(int i = idx; i <= 6; i++)
    {
        if(check3[abs(7-i)] == 1)
        {
            continue;
        }
        
        check3[i] = 1;
        Min_3(sum+dice[i], i+1, cnt+1);
        check3[i] = 0;
    }
 
int main(void)
{
//    freopen("B1041_input.txt", "r", stdin);
    
    cin >> N;
    
    for(int i = 1; i <= 6; i++)
    {
        cin >> dice[i]; // (1,6) (2,5) (3,4) 평행 
    }
    
    if(N == 1)
    {
        sort(dice+1, dice+7);
        
        long long sum = 0;
        for(int i = 1; i <= 5; i++)
        {
            sum += dice[i];
        }
        
        cout << sum;
    }
    else
    {
        Min_1();
        Min_2(010);    
        Min_3(010);
 
        long long Min1_Sum = Min1 * (N-2* (N-1* 4 + Min1 * (N-2* (N-2);
        long long Min2_Sum = Min2 * (N-1* 4 + Min2 * (N-2* 4;
        long long Min3_Sum = Min3 * 4;
    
        cout << Min1_Sum + Min2_Sum + Min3_Sum;   
    }
    
    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;
 
long long N;
long long length;
 
int main(void)
{
//    freopen("B1024_input.txt", "r", stdin);
    
    cin >> N >> length;
    
    if(length > 100)
    {
        cout << "-1" << endl;
    }
    else
    {
        bool flag = false;
        long long first, last; 
        
        for(long long i = length; i <= 100; i++)
        {    
            // 나누는 수가 짝수 
            if(i % 2 == 0)
            {
                if(N % i == i/2)
                {
                    first = N/i-(i/2-1);
                    last = N/i+(i/2);
                    
                    // 음이 아닌 정수 리스트 고려
                    if(first < 0)
                    {
                        continue;
                    }
                    else
                    {
                        flag = true;
                        break;    
                    }
                }
            }    
            // 나누는 수가 양수
            else
            {
                if(N % i == 0)
                {
                    first = N/i-(i/2);
                    last = N/i+(i/2);
                    
                    // 음이 아닌 정수 리스트 고려 
                    if(first < 0)
                    {
                        continue;
                    }
                    else
                    {
                        flag = true;
                        break;    
                    }
                }
            }
        }
        
        if(flag == false)
        {
            cout << "-1" << endl;
        }
        else
        {
            for(long long i = first; i <= last; i++)
            {
                cout << i << " ";
            }
        }
    }
    
    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;
 
typedef struct node
{
    int num;
    int idx;
}node;
 
node A[55];
int P[55];
int N;
 
bool cmp(node A, node B)
{
    if(A.num < B.num)
    {
        return true;
    }
    else if(A.num == B.num)
    {
        if(A.idx < B.idx)
        {
            return true;
        }
        else
        {
            return false;    
        }
    }
    else
    {
        return false;
    }
}
 
int main(void)
{
//    freopen("B1015_input.txt", "r", stdin);
    
    cin >> N;
    
    for(int i = 0; i < N; i++)
    {
        cin >> A[i].num;
        A[i].idx = i;
    }
    
    sort(A, A+N, cmp);
    
    for(int i = 0; i < N; i++)
    {
        for(int j = 0; j < N; j++)
        {
            if(i == A[j].idx)
            {
                P[i] = j;
            }
        }
    }
    
    for(int i = 0; i < N; i++)
    {
        cout << P[i] << " ";
    }
    
    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 startNum;
string endNum = "123456780";
bool flag = false;
 
queue<string> q;
map<stringint> visited;
 
int dx[4= {-1100};
int dy[4= {00-11};
 
int safe(int x, int y)
{
    if(x >= 0 && x < 3 && y >= 0 && y < 3)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
 
void BFS()
{
    visited[startNum] = 1;
    q.push(startNum);
    
    while(!q.empty())
    {
        string num = q.front();
        q.pop();
 
        if(num == endNum)
        {
            flag = true;
            return;
        }
        
        // 빈칸(0)을 찾는 반복문 
        int empty;
        for(int i = 0; i < 9; i++)
        {
            if(num[i] == '0')
            {
                empty = i;
                break;
            }
        }
        
        int x = empty / 3;
        int y = empty % 3;
        
        for(int i = 0; i < 4; i++)
        {
            int xpos = x+dx[i];
            int ypos = y+dy[i];
            
            if(safe(xpos, ypos) == 1)
            {
                string tempNum = num;
                
                // swap
                char temp = tempNum[3*x+y];
                tempNum[3*x+y] = tempNum[3*xpos+ypos];
                tempNum[3*xpos+ypos] = temp;
                
                if(visited[tempNum] == 0)
                {
                    visited[tempNum] = visited[num]+1;
                    q.push(tempNum);
                }
            }    
        }    
    }
}
 
int main(void)
{
//    freopen("B1525_input.txt", "r", stdin);
    
    for(int i = 0; i < 3; i++)
    {
        for(int j = 0; j < 3; j++)
        {
            string input;
            cin >> input;
            
            startNum += input;
        }
    }
    
    BFS();
    
    if(flag == true)
    {
        cout << visited[endNum]-1 << endl;
    }
    else
    {
        cout << "-1" << endl;
    }
    
    return 0;
}
cs
#include <stdio.h>
#include <iostream>
#include <set>
#include <map>
#include <queue>
#include <vector>
#include <string>
#include <string.h>
#include <math.h>
#include <algorithm>
using namespace std;
 
string startNum, endNum;
string digit = "0123456789"// 자릿수 저장 
int T;
bool flag = false;
 
queue<string> q;
map<stringint> visited;
 
int dx[4= {-1100};
int dy[4= {00-11};
 
int check(string temp)
{
    int num = stoi(temp);
    
    for(int i = 2; i <= sqrt(num); i++)
    {
        if(num % i == 0)
        {
            return 0;
        }
    }
    
    return 1;
}
 
void BFS()
{
    visited[startNum] = 1;
    q.push(startNum);
    
    while(!q.empty())
    {
        string num = q.front();
        q.pop();
        
        if(num == endNum)
        {
            flag = true;
            return;
        }
        
        // 4 자리수 
        for(int i = 0; i < 4; i++)
        {
            string temp = num;
            
            // 첫째자리수 
            if(i == 0)
            {
                // 각 자리수 1~9 
                for(int j = 1; j <= 9; j++)
                {
                    // 교환 
                    temp[i] = digit[j];
                    
                    if(visited[temp] == 0 && check(temp) == 1)
                    {
                        visited[temp] = visited[num]+1;
                        q.push(temp);
                    }
                }
            }
            else
            {
                // 각 자리수 0~9 
                for(int j = 0; j <= 9; j++)
                {
                    // 교환
                    temp[i] = digit[j];
                    
                    if(visited[temp] == 0 && check(temp) == 1)
                    {
                        visited[temp] = visited[num]+1;
                        q.push(temp);
                    }
                }
            }
        }
    }
}
 
int main(void)
{
//    freopen("B1963_input.txt", "r", stdin);
    
    cin >> T;
    
    for(int n = 1; n <= T; n++)
    {
        queue<string> empty;
        swap(empty, q);
        visited.clear();
        flag = false;
        
        cin >> startNum >> endNum;        
        
        BFS();
        
        if(flag == false)
        {
            cout << "Impossible" << endl;
        }
        else
        {
            cout << visited[endNum]-1 << endl;
        }    
    }
    
    return 0;
}
cs
#include <stdio.h>
#include <iostream>
#include <set>
#include <queue>
#include <vector>
#include <string>
#include <string.h>
#include <algorithm>
using namespace std;
 
typedef struct node
{
    int x;
    int y;
    int size;
    int eat;
    int dist;
}node;
 
int map[21][21];
int N;
int ans;
 
queue<node> q;
int visited[21][21];
 
node f;
vector<node> fish;
 
int dx[4= {-1100};
int dy[4= {00-11};
 
bool cmp(node A, node B)
{
    // 거리가 같을 경우
    if(A.dist == B.dist)
    {
        // 위쪽에 있는 먹이가 여러개인 경우
        if(A.x == B.x)
        {
            // 왼쪽에 있는 먹이
            if(A.y < B.y)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        // 위쪽에 있는 먹이 
        else if(A.x < B.x)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    // 가장 짧은 거리 
    else if(A.dist < B.dist)
    {
        return true;
    }
    else
    {
        return false;
    }
}
 
int safe(int x, int y)
{
    if(x >= 0 && y >= 0 && x < N && y < N)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
 
void BFS()
{
    while(1)
    {
        memset(visited, 0sizeof(visited));
        fish.clear();
        
        visited[f.x][f.y] = 1;
        q.push(f);
        
        // 먹이가 될수있는 물고기를 찾는 반복문 
        while(!q.empty())
        {
            int x = q.front().x;
            int y = q.front().y;
            int size = q.front().size;
            int eat = q.front().eat;
            int dist = q.front().dist;
            q.pop();
            
            for(int i = 0; i < 4; i++)
            {
                int xpos = x+dx[i];
                int ypos = y+dy[i];
                
                // 먹이 없이 지나갈수만 있는 경우 
                if(safe(xpos, ypos) == 1 && (map[xpos][ypos] == 0 || map[xpos][ypos] == 9 || map[xpos][ypos] == size&& visited[xpos][ypos] == 0)
                {
                    visited[xpos][ypos] = 1;
                    q.push({xpos, ypos, size, eat, dist+1});
                }
                // 먹이가 있는 경우 
                else if(safe(xpos, ypos) == 1 && map[xpos][ypos] < size && visited[xpos][ypos] == 0)
                {
                    visited[xpos][ypos] = 1;
                    q.push({xpos, ypos, size, eat, dist+1});
                    
                    // 먹이가 될수 있는 물고기 저장 
                    fish.push_back({xpos, ypos, size, eat, dist+1});
                }
            }
        }
        
        // 먹이가 될 수 있는 물고기가 없으면 종료 
        if(fish.size() == 0)
        {
            return;
        }
        
        sort(fish.begin(), fish.end(), cmp);
        
        // 물고기를 잡아먹음 
        fish[0].eat++;
        
        // 상어의 크기 = 잡아먹은 물고기 수  
        if(fish[0].size == fish[0].eat)
        {
            fish[0].size++;
            fish[0].eat = 0;
        }
        
        // 잡아 먹은 물고기 지움
        map[fish[0].x][fish[0].y] = 0;
        
        // 움직인 거리 저장
        ans += fish[0].dist;
        
        // f 초기화
        f = {fish[0].x, fish[0].y, fish[0].size, fish[0].eat, 0}; 
    }
}
 
int main(void)
{
//    freopen("B16236_input.txt", "r", stdin);
    
    cin >> N;
    
    for(int i = 0; i < N; i++)
    {
        for(int j = 0; j < N; j++)
        {
            cin >> map[i][j];    
            
            if(map[i][j] == 9)
            {
                f = {i, j, 200};
            }
        }
    }
    
    BFS();
    
    cout << ans; 
 
    return 0;
}
cs

+ Recent posts