[BaekJoon 1157][๐ŸŸค1] ๋‹จ์–ด ๊ณต๋ถ€

Date :   Updated :

โ“ ๋ฌธ์ œ

๋ฐฑ์ค€ 1157 - โ€œ๋‹จ์–ด ๊ณต๋ถ€โ€

๐ŸŽฏ ๋‚œ์ด๋„

Bronze ๐ŸŸค1

๐Ÿง  ํ’€์ด

1. ๋‚ด ํ’€์ด (๊ตฌํ˜„)

- ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • Implementation, string

- ์„ค๋ช…

๋ฌธ์ž์—ด์„ ํ™œ์šฉํ•œ ๊ตฌํ˜„ ํ’€์ด์ด๋‹ค.

๋ฌธ์ž์—ด์„ ์ž…๋ ฅ ๋ฐ›๊ณ  ๊ฐ ๋ฌธ์ž๋“ค์„ ์ˆœํšŒํ•˜๋ฉด์„œ, ๋Œ€์†Œ๋ฌธ์ž์— ์ƒ๊ด€์—†์ด ๋นˆ๋„์ˆ˜๋ฅผ ๊ฐฑ์‹ ํ•ด๊ฐ€๋ฉฐ '์ตœ๋นˆ๋„'์ธ ์•ŒํŒŒ๋ฒณ์„ ๋Œ€๋ฌธ์ž๋กœ ์ถœ๋ ฅํ•˜๋„๋ก ๋กœ์ง์„ ๊ตฌํ˜„ํ–ˆ๋‹ค.

๋Œ€์†Œ๋ฌธ์ž์— ์ƒ๊ด€์—†์ด ์ธ์‹ํ•˜๋„๋ก toupper ํ•จ์ˆ˜๋กœ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ–ˆ์œผ๋ฉฐ, ์ด์ „ ๋ฐ˜๋ณต๋ฌธ์—์„œ ๊ตฌํ•œ iMax (์ตœ๋นˆ๋„)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฐ™์€ ์ตœ๋นˆ๋„ ์•ŒํŒŒ๋ฒณ์ด ์žˆ์œผ๋ฉด ?๋ฅผ ์ถœ๋ ฅ, ์•„๋‹ˆ๋ผ๋ฉด ํ•ด๋‹น ์•ŒํŒŒ๋ฒณ์„ ์ถœ๋ ฅํ•˜๋„๋ก ํ–ˆ๋‹ค.

sort๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ max_element ๋“ฑ์˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๊ฒ ์ง€๋งŒ, ๋‚˜์—๊ฒ ์ด ํ’€์ด๊ฐ€ ๊ฐ€์žฅ ํšจ์œจ์ ์ด๋ผ๊ณ  ํŒ๋‹จ๋˜์—ˆ๋‹ค.

์ฒ˜์Œ O(N) ๋ฐ˜๋ณต๋ฌธ์„ ์ œ์™ธํ•œ toupper์€ O(1), ๋‘ ๋ฒˆ์งธ ๋ฐ˜๋ณต๋ฌธ ๋˜ํ•œ ์ƒ์ˆ˜ ์‹œ๊ฐ„์œผ๋กœ O(1)์ด๋ฏ€๋กœ, ์ „์ฒด์ ์ธ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N)์ด๋‹ค.

- ์ฝ”๋“œ

๋‚ด ํ’€์ด ์ฝ”๋“œ
#include <iostream>

#include <string>

#include <cctype>

#include <algorithm>


using namespace std;

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

    string strInput{};
    cin >> strInput;

    int arrAlphabet[26]{};  // ๊ฐ ์•ŒํŒŒ๋ฒณ ๊ฐœ์ˆ˜ ๋ฐฐ์—ด
    int iMax{}; // ์ตœ๋นˆ๋„ ๋ณ€์ˆ˜

    for(char chInput : strInput)
    {
        // ํ˜„์žฌ ๋ฌธ์ž๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜
        chInput = static_cast<unsigned char>(toupper(chInput));
        
        int iInput{ static_cast<int>(chInput - 'A') };

        // ํ•ด๋‹น ์•ŒํŒŒ๋ฒณ์˜ ๋นˆ๋„ ์ฆ๊ฐ€, ์ตœ๋นˆ๋„ ๋ณ€์ˆ˜ ๊ฐฑ์‹ 
        ++arrAlphabet[iInput];
        iMax = max(iMax, arrAlphabet[iInput]);
    }

    int iIndex{ -1 };   // ์ตœ๋นˆ๋„ ์•ŒํŒŒ๋ฒณ์˜ ์ธ๋ฑ์Šค ๋ณ€์ˆ˜
    for(int i = 0; i < 26; ++i)
    {
        // ์ตœ๋นˆ๋„์™€ ๊ฐ™์€ ๋นˆ๋„๋ฅผ ๊ฐ€์ง„ ์•ŒํŒŒ๋ฒณ์ธ ๊ฒฝ์šฐ
        if(arrAlphabet[i] == iMax)
        {
            // ์ด๋ฏธ ์ด์ „์— ์ตœ๋นˆ๋„๊ฐ€ ๋‚˜์˜จ ๊ฒฝ์šฐ
            if(iIndex != -1)
            {
                cout << '?';
                return 0;
            }

            // ์ธ๋ฑ์Šค ๊ฐฑ์‹ 
            iIndex = i;
        }
    }

    // ๋Œ€๋ฌธ์ž๋กœ ์ถœ๋ ฅ
    cout << static_cast<char>(iIndex + 'A');

    return 0;
}

๐Ÿ’ญ ํ›„๊ธฐ

๋ฌธ์ž์—ด์˜ ๋Œ€์†Œ๋ฌธ์ž ํŒ๋ณ„, ์ตœ๋นˆ๋„ ๋ฐ ์ค‘๋ณต ์›์†Œ์˜ ํŒ๋ณ„ ๋“ฑ์˜ ๋กœ์ง์€ ์ฝ”ํ…Œ๋ฅผ ํ•˜๋ฉด์„œ ์ •๋ง ๋งŽ์ด ๋‚˜์˜ค๊ณ , ์ตํ˜€๋‘๋ฉด ์•„์ฃผ ์ข‹์œผ๋ฏ€๋กœ ์‰ฌ์šด ๋‚œ์ด๋„์˜ ๋ฌธ์ œ๋ผ๋„ ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.

Comments