BOJ : https://www.acmicpc.net/problem/1931

github : https://github.com/junho0956/Algorithm/blob/master/1931/1931/%EC%86%8C%EC%8A%A4.cpp

 

회의실을 최대한 많이 사용하기 위해서는 회의의 시작시간이나 회의시간 이 중요한게 아니고

회의가 언제 끝냐느냐가 가장 중요합니다.

회의가 빨리 끝나는 순으로 정렬하여서 가능한 모든 회의를 진행하면 이게 최대의 횟수가 됩니다.

 

 

더보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
 
vector<pair<intint> > v;
int N, f, s;
 
bool cmp(pair<intint>& a, pair<intint>& b) {
    if (a.second != b.second) return a.second < b.second;
    else return a.first < b.first;
}
 
int main() {
    ios::sync_with_stdio(0), cin.tie(0);
    cin >> N;
    for (int i = 0; i < N; i++) {
        cin >> f >> s;
        v.push_back({ f,s });
    }
    
    sort(v.begin(), v.end(), cmp);
 
    int cnt = 1, fin = v[0].second;
    for (int i = 1; i < v.size(); i++) {
        if (v[i].first >= fin) {
            cnt++;
            fin = v[i].second;
        }
    }
 
    cout << cnt;
    return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

'algorithm > BOJ' 카테고리의 다른 글

BOJ 1744번 수 묶기  (0) 2020.01.17
BOJ 11399번 ATM  (0) 2020.01.17
BOJ 1783번 병든 나이트  (0) 2020.01.17
BOJ 10610번 30  (0) 2020.01.17
BOJ 2875번 대회or인턴  (0) 2020.01.17

BOJ : https://www.acmicpc.net/problem/1783

github : https://github.com/junho0956/Algorithm/blob/master/1783/1783/%EC%86%8C%EC%8A%A4.cpp

 

처음에는 진짜 이걸 어떻게 푸나 싶었다.

범위도 크고 진짜 탐색할수도 없고

그래서 1~4번 규칙을 이용해서 몆가지 예시를 만들어가보니 규칙이 보였다.

 

만약 N 이 1이면 1 2 3 4 조건을 사용할수가 없다. => 1개

만약 N 이 2이면 1 4 조건은 사용못하지만 2 3 은 사용할수있다.  

중요한 것은 만약, 이동 횟수가 4번 이상인 경우에는 위의 이동 방법을 각각 한 번 이상 이용해야 한다. 는 제약이다.

그래서 M 의 길이에 따라 최대 4개가 될 수 있다.

만약 N 이 3이상이라면 1 2 3 4 조건을 모두 사용할 수 있게 된다.

이때는 최대한 많은 방문을 해야한다고 했으니, 규칙상 가로를 2칸이동하는 것 보다는 세로를 2칸씩 이동하는 것이

더 많은 방문을 할 수 있다.

그러므로 2 3 조건을 1번씩만 사용한다면 1 4 조건으로만 계속 1줄씩 채워나갈수 있다

M 의 길이에 주의해서 2 3 조건을 1번씩만 사용하니 방문못하는 경우는 단 2줄밖에 없게 된다.

 

더보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <algorithm>
using namespace std;
 
int main() {
    int N, M;
    cin >> N >> M;
    if (N == 1cout << "1";
    else if (N == 2cout << min(4, (M - 1/ 2 + 1);
    else {
        if (M <= 6) {
            if (M <= 3cout << M;
            else cout << "4";
        }
        else cout << M - 2;
    }
 
    return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

'algorithm > BOJ' 카테고리의 다른 글

BOJ 11399번 ATM  (0) 2020.01.17
BOJ 1931번 회의실 배정  (0) 2020.01.17
BOJ 10610번 30  (0) 2020.01.17
BOJ 2875번 대회or인턴  (0) 2020.01.17
BOJ 11047번 동전 0  (0) 2020.01.17

BOJ : https://www.acmicpc.net/problem/10610

github : https://github.com/junho0956/Algorithm/blob/master/10610/10610/%EC%86%8C%EC%8A%A4.cpp

 

30의 배수가 되기 위해서는 2가지의 조건이 필요합니다.

1) 마지막숫자가 0 이여야합니다. ==> 0의 존재여부를 확인해주시면 됩니다.

2) 수를 전부 더 했을 때 3의 배수 즉, 3으로 나누어떨어져야합니다.

30의 배수는 30 60 90 120 150 180 210 ,,, 이 되는데 숫자들을 자리수끼리 더해보면 결국 3으로 나누어떨어진다는 점을 알 수 있습니다. 

 

더보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
 
bool cmp(char& a, char& b) { return a > b; }
 
int main() {
    ios::sync_with_stdio(0), cin.tie(0);
    string str;
    cin >> str;
 
    long long total = 0, check = 0;
    for (int i = 0; i < str.size(); i++) {
        total += str[i] - '0';
        if (str[i] == '0') check = 1;
    }
 
    if (check && total % 3 == 0) {
        sort(str.begin(), str.end(), cmp);
        cout << str << '\n';
    }
    else cout << "-1\n";
 
    return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

'algorithm > BOJ' 카테고리의 다른 글

BOJ 1931번 회의실 배정  (0) 2020.01.17
BOJ 1783번 병든 나이트  (0) 2020.01.17
BOJ 2875번 대회or인턴  (0) 2020.01.17
BOJ 11047번 동전 0  (0) 2020.01.17
BOJ 10090번 Counting Inversions  (0) 2020.01.17

BOJ : https://www.acmicpc.net/problem/2875

github : https://github.com/junho0956/Algorithm/blob/master/2875/2875/%EC%86%8C%EC%8A%A4.cpp

 

N 의 조건을 제대로 주지못해서 틀렸던 문제입니다.

N은 항상 2명씩 계산되어야합니다.

team을 우선 계산해준후에 K에 대한 계산을 해주면 됩니다.

 

더보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
 
int main() {
    int N, M, K, team = 0;
 
    cin >> N >> M >> K;
 
    while (N > 1 && M) {
        team++, N -= 2, M--;
    }
 
    while (N && K) N--, K--;
    while (M && K) M--, K--;
 
    while (team && K > 0) team--, K -= 3;
    cout << team;
 
    return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

'algorithm > BOJ' 카테고리의 다른 글

BOJ 1783번 병든 나이트  (0) 2020.01.17
BOJ 10610번 30  (0) 2020.01.17
BOJ 11047번 동전 0  (0) 2020.01.17
BOJ 10090번 Counting Inversions  (0) 2020.01.17
BOJ 1517번 버블 소트  (0) 2020.01.17

+ Recent posts