<코드>

#define _CRT_SECURE_NO_WARNINGS 

#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <cstring>
#include <queue>
using namespace std;


int main() {

    int N, K;
    cin >> N >> K;
    int arr[2][7] = { { 0,0 },
                    {0,0,0,0,0,0,0} };

    int S, Y;
    for (int i = 0; i < N; i++) {
        cin >> S >> Y;

        arr[S][Y]++;

  
    }
    int cnt = 0;

    for (int j = 0; j <= 1; j++) {
        for (int k = 1; k <= 6; k++) {
            while (arr[j][k] > 0) {
                arr[j][k] -= K;
                cnt++;

            }
        }
    }

    cout << cnt;

    
    return 0;
}

 

 

 

성별, 학년별로 배열을 만들어줘서

각 배열 돌면서 방 인원수만큼 빼면서 카운트하면 최소 방 개수가 금방 나옵니다!

 

딱히 다른 조건 생각할게 없어서 쉬운문제였네요

'[백준] > C++' 카테고리의 다른 글

백준 4920번 테트리스 게임 [C++]  (0) 2023.07.19
백준 11687번 팩토리얼 0의 개수 [C++]  (0) 2023.07.08
백준 9012번 괄호 [C++]  (0) 2023.06.25
백준 10845번 큐 [C++]  (0) 2023.06.25
백준16396번 선 그리기 [C++]  (0) 2023.06.25

 

<코드>

#include <iostream>
#include <string>

using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    //닫는거만 세주면 됩니다
    //여는 괄호에서 닫는 거 개수만큼 차감해주고 마이너스가 된다면 VPS가 아니죠
    int n;
    cin >> n;

    while (n--) {
        string input;
        cin >> input;
        int vpsCount = 0;
        bool minus = false;

        for (int i = 0; i < input.size(); i++) {

            if (input[i] == '(') {
                vpsCount++;
            }
            else {
                vpsCount--;
            }
            if (vpsCount < 0) {
                cout << "NO" << "\n";
                minus = true;
                break;
            }
        }

        if (minus == false) {
            if (vpsCount != 0) {
                cout << "NO" << "\n";
            }
            else {
                cout << "YES" << "\n";
            }
        }
    }
    
    return 0;
}

주석에 써놓은대로 스택을 굳이 안쓰고 

닫는 개수만 세주면 되겠죠

여는 괄호에서 닫는괄호를 차감해주고 음수가 된다면 닫는괄호가 더 많은거니

vps가 아니라고 볼 수 있습니다.

'[백준] > C++' 카테고리의 다른 글

백준 11687번 팩토리얼 0의 개수 [C++]  (0) 2023.07.08
백준 13300번 방 배정 [C++]  (0) 2023.06.25
백준 10845번 큐 [C++]  (0) 2023.06.25
백준16396번 선 그리기 [C++]  (0) 2023.06.25
백준 1316번 그룹 단어 체커 [C++]  (0) 2023.06.25

[

#include <iostream>
#include <string>
#include <queue>
using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    int n;
    cin >> n;
    queue<int> cnt;

    while (n--) {
        string input;
        cin >> input;

        if (input == "push") {
            int input2;
            cin >> input2;
            cnt.push(input2);
        }
        if (input == "pop") {
            if (!cnt.empty()) {
                cout << cnt.front() << "\n";
                cnt.pop();
            } 
            else {
                cout << -1 << "\n";
            }
        }
        else if (input == "size") {
            cout << cnt.size() << "\n";
        }
        else if (input == "empty") {
            if (cnt.empty()) {
                cout << 1 << "\n";
            }
            else {
                cout << 0 << "\n";
            }
        }
        else if (input == "front") {
            if (!cnt.empty()) {
                cout << cnt.front() << "\n";
            }
            else {
                cout << -1 <<"\n";
            }
        }
        else if (input == "back") {
            if (!cnt.empty()) {
                cout << cnt.back() << "\n";
            }
            else {
                cout << -1 << "\n";
            }
        }
    }

    return 0;
}

 

라이브러리 연결해서 풀면 간단한 문제였습니다.

'[백준] > C++' 카테고리의 다른 글

백준 13300번 방 배정 [C++]  (0) 2023.06.25
백준 9012번 괄호 [C++]  (0) 2023.06.25
백준16396번 선 그리기 [C++]  (0) 2023.06.25
백준 1316번 그룹 단어 체커 [C++]  (0) 2023.06.25
백준 11365번 !밀비 급일 [C++]  (0) 2023.06.25

#include <iostream>

using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int arr[10001] = {
        0,
    }; // 좌표의 길이

    int N; // 테스트 케이스
    cin >> N;
    int a, b;

    for (int i = 0; i < N; i++) { // 입력된 작대기만큼 배열 활성화
        cin >> a >> b;
        for (int j = a; j < b; j++) { // a 에서 b 범위에 신경쓸것
            arr[j] = 1;
        }
    }

    int cnt = 0;
    for (int k = 1; k <= 10001; k++) { // 작대기 길이 세주기

        if (arr[k] == 1) {
            cnt++;
        }
    }
    cout << cnt;
}

배열 초기화랑 작대기 길이에 주의, 정점의 개수를 세면 안됩니다

 

'[백준] > C++' 카테고리의 다른 글

백준 9012번 괄호 [C++]  (0) 2023.06.25
백준 10845번 큐 [C++]  (0) 2023.06.25
백준 1316번 그룹 단어 체커 [C++]  (0) 2023.06.25
백준 11365번 !밀비 급일 [C++]  (0) 2023.06.25
백준 5585번 거스름돈 [C++]  (0) 2023.06.25

<코드>

#include <iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;

int count = 0;

void GroupWord(string input,int &count) {
    bool alp[26] = { 0, };
    bool group = true;

    for(int i = 0; i < input.size(); i++) {
        if (i > 0) {
            if (input[i] != input[i - 1] && alp[input[i] - 97] == true) {
                group = false;
                break;
            }
        }

        alp[input[i] - 97] = true;
    }
    if (group == true) {
        count++;
    }
}


int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int count = 0;

    int N;
    cin >> N;
    while (N--) {
        string input;
        cin >> input;
        GroupWord(input,count);

    }

    cout << count;
}

대략 그룹 단어인지 체크해주는 함수를 따로 만들어주고

아스키 코드 넘버를 활용해서 체크해줫습니다.

'[백준] > C++' 카테고리의 다른 글

백준 10845번 큐 [C++]  (0) 2023.06.25
백준16396번 선 그리기 [C++]  (0) 2023.06.25
백준 11365번 !밀비 급일 [C++]  (0) 2023.06.25
백준 5585번 거스름돈 [C++]  (0) 2023.06.25
백준 2865번 5와 6의 차이 [C++]  (0) 2023.06.25

 

<코드>

#include <iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;


int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    vector<string> box;
    string input = "";
    while (true) {
        getline(cin, input); //한줄 통채로 입력받기
        if (input == "END") {
            break;
        }
        reverse(input.begin(), input.end()); //코드 뒤집기
        box.push_back(input);
        
    }
    for (int i = 0; i < box.size(); i++) {
        cout << box[i]<<"\n";
    }

}

개인적으로 한줄입력받고 출력받아도 되는데

전부 입력받고 뒤집게 만들어서 조금 더 어렵게 푼거 같네용

 

<코드>

#include <iostream>
#include<string>
using namespace std;


int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int input;
    cin >> input;
    int cnt = 0;
    input = 1000 - input;

    cnt += input / 500;
    input = input % 500;

    cnt += input / 100;
    input = input % 100;

    cnt += input / 50;
    input = input % 50;

    cnt += input / 10;
    input = input % 10;

    cnt += input / 5;
    input = input % 5;

    cnt += input / 1;
    input = input % 1;

    cout << cnt;

}

이정도로 적은 테스트케이스는 개인적으로 그냥 다 써버리는 것도 나쁘지 않다 생각합니다 ㅎㅎ..

 

<코드>

#include <iostream>
#include<string>
using namespace std;


int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    string a, b;
    cin >> a >> b;
    
    //모두 5로 바꾼게 최솟값 모두 6으로 바꾼게 최대값
    for (int i = 0; i < a.length(); i++) {
        if (a[i] == '6') {
            a[i] = '5';
        }
    }
    for (int i = 0; i < a.length(); i++) {
        if (b[i] == '6') {
            b[i] = '5';
        }
    }
    cout << stoi(a) + stoi(b) << ' '; //문자열을 정수로 바꾸는 함수

    for (int i = 0; i < a.length(); i++) {
        if (a[i] == '5') {
            a[i] = '6';
        }
    }
    for (int i = 0; i < a.length(); i++) {
        if (b[i] == '5') {
            b[i] = '6';
        }
    }

    cout << stoi(a) + stoi(b);
}

 

https://www.acmicpc.net/problem/2864

 

2864번: 5와 6의 차이

첫째 줄에 두 정수 A와 B가 주어진다. (1 <= A,B <= 1,000,000)

www.acmicpc.net

 

<코드>

#include <cstdio>
#include <algorithm>
#include <queue>
using namespace std;
int a[30][30];
int group[30][30];
int dx[] = {0,0,1,-1};
int dy[] = {1,-1,0,0};
int n;
int ans[25*25];
void bfs(int x, int y, int cnt) {
    queue<pair<int,int>> q;
    q.push(make_pair(x,y));
    group[x][y] = cnt;
    while (!q.empty()) {
        x = q.front().first;
        y = q.front().second;
        q.pop();
        for (int k=0; k<4; k++) {
            int nx = x+dx[k];
            int ny = y+dy[k];
            if (0 <= nx && nx < n && 0 <= ny && ny < n) {
                if (a[nx][ny] == 1 && group[nx][ny] == 0) {
                    q.push(make_pair(nx,ny));
                    group[nx][ny] = cnt;
                }
            }
        }
    }
}
int main() {
    scanf("%d",&n);
    for (int i=0; i<n; i++) {
        for (int j=0; j<n; j++) {
            scanf("%1d",&a[i][j]);
        }
    }
    int cnt = 0;
    for (int i=0; i<n; i++) {
        for (int j=0; j<n; j++) {
            if (a[i][j] == 1 && group[i][j] == 0) {
                bfs(i, j, ++cnt);
            }
        }
    }
    printf("%d\n",cnt);
    for (int i=0; i<n; i++) {
        for (int j=0; j<n; j++) {
            ans[group[i][j]]+=1;
        }
    }
    sort(ans+1, ans+cnt+1);
    for (int i=1; i<=cnt; i++) {
        printf("%d\n",ans[i]);
    }
    return 0;
}

2667번: 단지번호붙이기 (acmicpc.net)

'[백준] > C++' 카테고리의 다른 글

백준16396번 선 그리기 [C++]  (0) 2023.06.25
백준 1316번 그룹 단어 체커 [C++]  (0) 2023.06.25
백준 11365번 !밀비 급일 [C++]  (0) 2023.06.25
백준 5585번 거스름돈 [C++]  (0) 2023.06.25
백준 2865번 5와 6의 차이 [C++]  (0) 2023.06.25

+ Recent posts