백준: Class 1 - 1008, 1152, 1546, 2562, 2577, 2908, 10171, 10172, 10951

1 분 소요


</br> solved ac에서도 학교 별 랭킹을 볼 수 있어서 봤는데, 클래스라는 게 있더라
1
다들 숫자가 있는데 나만 없다
이런 게 있으시다면 나도 해 드리는 게 인지상정
</br>

은근 입출력 관련 기억할 것들이나 기본적인 것들 정리하자
</br>

1008: A/B

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

cout.precision(11);

c++의 iostream에서 cout의 출력 소수점을 조절할 수 있다
</br>

1152: 단어의 개수

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

    string s;
    getline(cin, s);
    int cnt = 0;
    for(int i = 0; i < s.size(); i++){
        if( s[i] != ' ' ){
            cnt++;
            while( s[i] != ' ' && i < s.size() ) i++;
        }
    }
    cout << cnt << endl;

getline() 쓰기
</br>

1546: 평균

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

double m = *max_element(nums, nums+n);

예전에 어디서 이거 본 뒤로 막 for문 적고 비교하고 할 필요 없이 쏠쏠하게 쓴다
</br>

10951: A+B - 4

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

    int a, b;
    while( cin >> a >> b ){
        cout << a+b << '\n';
    }

끝이 언제일 지 알 수 없는 입력일 때 일케 하면 된다
cin이 true와 false를 리턴해 준다.

    while( !(cin >> a >> b).eof() ){
        cout << a+b << '\n';
    }

아님 이렇게도
</br>

10171: 고양이

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

    cout << "\\    /\\\n";
    cout << " )  ( ')\n";
    cout << "(  /  )\n";
    cout << " \\(__)|\n";

이런 귀여운 문제가
특정 기호들을 출력할 땐 백슬래시를 쓰고 하기

    cout << "|\\_/|\n";
    cout << "|q p|   /}\n";
    cout << "( 0 )\"\"\"\\\n";
    cout << "|\"^\"`    |\n";
    cout << "||_/=\\\\__|\n";

자매품 개(https://www.acmicpc.net/problem/10172)
</br>

2562: 최댓값

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

    int *m = max_element(nums, nums+9);
    cout << *m << endl;
    cout << m-nums+1 << endl;

원래 max_element는 그 주소를 반환하니까, (최댓값의 주소) - (배열 시작 주소) + 1을 하면 인덱스도 출력할 수 있겠더라
</br>

2908: 상수

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

    string a, b;
    cin >> a >> b;

    reverse(a.begin(), a.end());
    reverse(b.begin(), b.end());

    cout << max(a, b) << endl;

가끔 수를 문자열로 취급하는 게 더 쉬울 때도 많다
여기서는 친절하게도 모두 3자리 수이고 0이 없다고 하지만, 다른 문제들은 0과 자리수를 특히 주의해 줘야 한다

    int k = a*b*c;
    string s = to_string(k);

    for(int i = 0; i < s.size(); i++){
        nums[s[i]-'0']++;
    }

    for(int i = 0; i < 10; i++){
        cout << nums[i] << endl;
    }

비슷하게 2577번 숫자의 개수(https://www.acmicpc.net/problem/2577) 역시 각 자리에 접근하므로 문자열이 편하다.
</br>


2
와~~ 까리한 게 생겼다

근데 이런 쉬운 거로 36문제 풀었더니 학교 랭킹이 너무 올라가 버렸다 92등
정답률도 53.403%
물렙만 쌓이는구나…
</br>

댓글남기기