πŸ’  Cpp/[BOJ] λ‹¨κ³„λ³„λ‘œ 풀어보기

[BOJ][C++] λ°±μ€€ 1157번 : 단어 곡뢀

선달 2021. 10. 5. 19:24
λ°˜μ‘ν˜•

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

 

1157번: 단어 곡뢀

μ•ŒνŒŒλ²³ λŒ€μ†Œλ¬Έμžλ‘œ 된 단어가 주어지면, 이 λ‹¨μ–΄μ—μ„œ κ°€μž₯ 많이 μ‚¬μš©λœ μ•ŒνŒŒλ²³μ΄ 무엇인지 μ•Œμ•„λ‚΄λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. 단, λŒ€λ¬Έμžμ™€ μ†Œλ¬Έμžλ₯Ό κ΅¬λΆ„ν•˜μ§€ μ•ŠλŠ”λ‹€.

www.acmicpc.net

 

문제

μ•ŒνŒŒλ²³ λŒ€μ†Œλ¬Έμžλ‘œ 된 단어가 주어지면, 이 λ‹¨μ–΄μ—μ„œ κ°€μž₯ 많이 μ‚¬μš©λœ μ•ŒνŒŒλ²³μ΄ 무엇인지 μ•Œμ•„λ‚΄λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. 단, λŒ€λ¬Έμžμ™€ μ†Œλ¬Έμžλ₯Ό κ΅¬λΆ„ν•˜μ§€ μ•ŠλŠ”λ‹€.

μž…λ ₯

첫째 쀄에 μ•ŒνŒŒλ²³ λŒ€μ†Œλ¬Έμžλ‘œ 이루어진 단어가 주어진닀. μ£Όμ–΄μ§€λŠ” λ‹¨μ–΄μ˜ κΈΈμ΄λŠ” 1,000,000을 λ„˜μ§€ μ•ŠλŠ”λ‹€.

좜λ ₯

첫째 쀄에 이 λ‹¨μ–΄μ—μ„œ κ°€μž₯ 많이 μ‚¬μš©λœ μ•ŒνŒŒλ²³μ„ λŒ€λ¬Έμžλ‘œ 좜λ ₯ν•œλ‹€. 단, κ°€μž₯ 많이 μ‚¬μš©λœ μ•ŒνŒŒλ²³μ΄ μ—¬λŸ¬ 개 μ‘΄μž¬ν•˜λŠ” κ²½μš°μ—λŠ” ?λ₯Ό 좜λ ₯ν•œλ‹€.

 

#include <iostream>
#include <algorithm>

using namespace std;

int main () {
    
    int alphabet[26] = {0};
    string word;
    cin >> word;
    
    //μ•ŒνŒŒλ²³ 배열에 각 μ•ŒνŒŒλ²³μ΄ λ‚˜μ˜¨ 횟수 μ €μž₯ (λŒ€μ†Œλ¬Έμž ꡬ뢄없이)
    for(int i=0; i<word.length(); i++){
        if(word[i] < 'a')
            alphabet[word[i] - 'A']++;
        else
            alphabet[word[i]-'a']++;
    }
    
    //κ°€μž₯ 많이 λ‚˜μ˜¨ μ•ŒνŒŒλ²³μ˜ 인덱슀 κ΅¬ν•˜κΈ°
    int max=0, max_index=0;
    for(int i=0; i<26; i++){
        if(max < alphabet[i]){
            max = alphabet[i];
            max_index = i;
        }
    }
    
    //μ•ŒνŒŒλ²³ λ°°μ—΄ μ •λ ¬ν•΄μ„œ 제일 λ§Žμ΄λ‚˜μ˜¨ 횟수[26] 와 λ‘λ²ˆμ§Έλ‘œ 많이 λ‚˜μ˜¨ 횟수[25]κ°€ κ°™μœΌλ©΄ ? 좜λ ₯
    sort(alphabet, alphabet+26);
    if(alphabet[25] == alphabet[24]){
        cout << "?";
    }
    else { //μ•„λ‹ˆλΌλ©΄ μ΅œλŒ“κ°’μ˜ 인덱슀 좜λ ₯
        cout << (char)(max_index+'A');
    }
    
    return 0;
}
λ°˜μ‘ν˜•