본문 바로가기

C++

백준 C++ 1152,1259,1264,1371,1547,1568,1731,1834,1864,2309,2355

1152

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

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

    string c;
    getline(cin,c);
    int cnt = 1;

    for (int i=0;i<c.size();i++){
        if(c[i]==' '){
            cnt ++;
        }
    }

    if(c[0]==' '){
        cnt --;
    }
    if(c[c.size()-1]==' '){
        cnt--;
    }

    cout<< cnt;

    return 0;
}

1259

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

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

    string n;

    while(1){

        cin >> n;
        if(n=="0"){
            break;
        }
        int cnt = 0;
        //반만 탐색
        for(int i=0;i<n.length()/2;i++){

            if(n[i]!=n[n.length()-i-1]){
                cnt ++;
                break;
            }
        }

        if(cnt>0){
            cout<<"no\n";
        }
        else {
            cout << "yes\n";
        }

    }


    return 0;
}

n.size로 했을 때 11일 때 no가 떠서 실패로 나와서 n.length로 바꾸어서 해결해주었다. 그리고 int cnt=0;을 while문 밖에 선언해주었을 때에는 1221의 값이 no로 떠서 실패가 나왔다.

1264

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

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

    string n;

    while (1) {
        getline(cin, n);
        if (n == "#") {
            break;
        }
        int cnt = 0;
        for (int i = 0; i < n.length(); i++) {
            if (n[i] == 'a' || n[i] == 'e' || n[i] == 'i' || n[i] == 'o' || n[i] == 'u' || n[i] == 'A' || n[i] == 'E' ||
                n[i] == 'I' || n[i] == 'O' || n[i] == 'U') {
                cnt++;
            }
        }
        cout << cnt <<'\n';

    }

    return 0;
}

1371

어려웠다 ㅠ...

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

int cnt[26]; //알파벳 26개를 각각 카운트 하기 위한 배열 선언


int main()
{
    string s;
    while(getline(cin,s)){
        for(int i=0;i<s.length();i++){
            if(s[i] >= 'a' && s[i] <='z'){
                cnt[s[i]-'a']++;
            }
        }
    }

    int maximum = 0;
    for (int i=0;i<26;i++){
        if(cnt[i]>maximum){
            maximum = cnt[i];
        }
    }

    for(int i=0;i<26;i++){
        if(cnt[i]==maximum){ //cnt[0]은 'a'가 나온 횟수를 저장하는 변수이다.
            cout<<char('a'+i); //i가 0 = a, i가 1=b, i가 2 = c로 출력된다.
        }
    }

    return 0;
}

1547

#include <iostream>
using namespace std;

int main()
{
    int num,x,y,temp=0;
    int cup[4]={0,1,0,0};

    cin >> num;

    for(int i=0;i<num;i++){
        cin >> x >> y;

        temp = cup[x];
        cup[x] = cup[y];
        cup[y] = temp;
    }

    for (int i=1;i<=3;i++){
        if(cup[i]==1){
            cout<<i;
            break;
        }
    }

    return 0;
}

1568

#include <iostream>
using namespace std;

int main()
{

    long long n;
    int cnt = 0,k=1;
    cin >> n;

    while(n>0){
        if(k>n){
            k=1;
        }
        n-=k;
        k++;
        cnt++;
    }

    cout << cnt << '\n';

    return 0;
}

1731

#include <iostream>

using namespace std;
int main()
{

    int num,sum;
    cin >> num;
    int str[num];

    for(int i=0;i<num;i++){
        cin >> str[i];
    }


    int sub = str[1] - str[0];
    int sub2 = str[2] - str[1];

    int dgr = str[1] / str[0];
    int dgr2 = str[2] / str[1];


if(sub==sub2){
    sum = str[num-1] + sub;
    cout << sum;
}

else if(dgr == dgr2){
    sum = str[num-1] * dgr;
    cout << sum;
}

    return 0;
}

1834

#include <iostream>
using namespace std;

int main()
{
    long long num,sum=0,cnt=0;
    cin >> num;

    while(num!=cnt){
        sum += (num*cnt)+cnt;
        cnt++;
    }

    cout << sum;

    return 0;
}

1864

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

int main()
{
    string str;
    int num,sum=0;

    while(str != "#"){

        cin >> str;

        for(int i=0;i<str.length();i++){

            switch (str[i]) {

                case '-':
                    num = 0;
                    break;
                case '\\':
                    num = 1;
                    break;
                case '(':
                    num = 2;
                    break;
                case '@':
                    num = 3;
                    break;
                case '?':
                    num = 4;
                    break;
                case '>':
                    num = 5;
                    break;
                case '&':
                    num = 6;
                    break;
                case '%':
                    num = 7;
                    break;
                case '/':
                    num = -1;
                    break;
            }

            sum += num * pow(8, str.length() - i - 1);
            //str.length = 문자열의 길이
            //i = 현재 반복 인덱스
            //str.length()-i-1인 이유는 인덱스가 0부터 시작하기 때문이다

        }

        if (str != "#") {
            cout << sum << endl;
            sum = 0; // 다음 루프를 위해 sum 초기화
        }

    }

    return 0;
}

2309

#include <iostream>
using namespace std;

void bubblesort(int list[],int n){

    int temp;

    for(int i=0;i<n;i++){
        for(int j=0;j<n-i-1;j++){
            if(list[j]>list[j+1]){
                temp = list[j];
                list [j] = list[j+1];
                list[j+1] = temp;
            }
        }
    }

}

int main()
{
    int sum=0;
    int arr[9];

    for(int i=0;i<9;i++){
        cin >> arr[i];
        sum += arr[i];
    }

    bubblesort(arr,9);

    //첫번째 선택된 난쟁이의 인덱스 중복을 피하기 위해 범위 n-1
    for(int i=0;i<8;i++) {
        //두번째 선택된 난쟁이의 인덱스 중복을 피하기 위해 i+1부터 시작
        for (int j = i + 1; j < 9; j++) {
            //두 명의 값을 빼면 100이 되는지 확인
            if (sum - (arr[i] + arr[j]) == 100) {
                for (int k = 0; k < 9; k++) {
                    if (k != i && k != j) {
                        cout << arr[k] << '\n';
                    }
                }
                //7명의 난쟁이를 출력하면 종료 
                return 0;
            }
        }
    }

    return 0;
}

2355

#include <iostream>
using namespace std;

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

    long long a,b;
    cin >> a >> b;

    //a부터 b까지의 합은 (b-a+1) * (a+b) / 2 으로 계산할 수 있다

    if(b>=a){
        int sum = (b-a+1) * (a+b) / 2;
        cout << sum;
    }

    else{
        int sum = (a-b+1) * (a+b) / 2;
        cout << sum;
    }

    return 0;
}