์ฌ์ดํธ
https://www.acmicpc.net/problem/1157
๋จ์ด ๊ณต๋ถ
๐ ๋ฌธ์
์ํ๋ฒณ ๋์๋ฌธ์๋ก ๋ ๋จ์ด๊ฐ ์ฃผ์ด์ง๋ฉด, ์ด ๋จ์ด์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋ ์ํ๋ฒณ์ด ๋ฌด์์ธ์ง ์์๋ด๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋จ, ๋๋ฌธ์์ ์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๋๋ค.
โจ๏ธ ์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ํ๋ฒณ ๋์๋ฌธ์๋ก ์ด๋ฃจ์ด์ง ๋จ์ด๊ฐ ์ฃผ์ด์ง๋ค. ์ฃผ์ด์ง๋ ๋จ์ด์ ๊ธธ์ด๋ 1,000,000์ ๋์ง ์๋๋ค.
๐ฅ๏ธ ์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ด ๋จ์ด์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋ ์ํ๋ฒณ์ ๋๋ฌธ์๋ก ์ถ๋ ฅํ๋ค. ๋จ, ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋ ์ํ๋ฒณ์ด ์ฌ๋ฌ ๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ์๋ ?๋ฅผ ์ถ๋ ฅํ๋ค.
๐ ์์ ์ ๋ ฅ
1.
Mississipi
2.
zZa
3.
z
๐ ์์ ์ถ๋ ฅ
1.
?
2.
Z
3.
Z
๐ค ํด๊ฒฐ์ฑ
1. ์ํ๋ฒณ์ ๊ฐ๊ฐ ์์คํค์ฝ๋ ๊ฐ์ ๊ฐ์ง๋ค.
2. ์ํ๋ฒณ ๊ฐ์ 27๊ฐ์ ๋ฐฐ์ด์ ๋ง๋ค๊ณ ๊ฐ๋ค์ 0์ผ๋ก ์ด๊ธฐํํ๋ค.
3. ๋จ์ด๋ฅผ ํ์ํ ๋, char ํ์ ์ ์ํ๋ฒณ์ intํ์ผ๋ก ๋ณํ ํ, ๊ฐ ์์คํค์ฝ๋์ ์์๊ฐ (๋๋ฌธ์ 65 / ์๋ฌธ์ 97)์ ๋นผ์ค๋ค.
4. ๋์จ ๊ฐ์ ์ธ๋ฑ์ค๋กํ์ฌ ํด๋น ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ์ฆ๊ฐ์ํจ๋ค.
5. ํ์ํ๋ฉด์ ๊ฐ์ฅ ๋ง์ด ๋์จ ์ํ๋ฒณ๊ณผ ๊ฐ์(maxCount)์ ๋น๊ตํ๋ฉฐ ์ ๋ฐ์ดํธํด์ฃผ๊ณ ํด๋น ์ธ๋ฑ์ค๋ฅผ ๋ด์๋๋ค.
5. ์ ๋ ฅ ๋ฐ์ ๊ฐ์ ๋ค ํ์ํ ํ์ ๋ฐฐ์ด์ ๋ค์ ํ์ํ์ฌ ๊ฐ์ฅ ํฐ ๊ฐ์ด ์ค๋ณต๋๋์ง ํ์ธํ๊ณ ์ค๋ณต๋๋ฉด "?"๋ฅผ, ๊ทธ๋ ์ง ์๋ค๋ฉด ๊ฐ์ฅ ๋์ ์ธ๋ฑ์ค๊ฐ์ 65๋ฅผ ๋ํ ๊ฐ์ charํ์ผ๋ก ๋ณํํ์ฌ ์ถ๋ ฅํ๋ค.
๐ง๐ป๐ป ์ฝ๋
#include <iostream>
#include <string>
using namespace std;
int main(void) {
int alphabet[26] = {0};
int maxCount = 0;
int maxIndex = 0;
bool duplication = false;
string str;
cin >> str;
for(int data: str) {
if(data >= 97) {
++alphabet[data-97];
if(alphabet[data-97] > maxCount) {
maxCount = alphabet[data-97];
maxIndex = data-97;
}
} else {
++alphabet[data-65];
if(alphabet[data-65] > maxCount) {
maxCount = alphabet[data-65];
maxIndex = data-65;
}
}
}
for (int i=0; i<26; i++) {
if(i != maxIndex && alphabet[maxIndex] == alphabet[i]){
duplication = true;
}
}
if(duplication) {
cout << "?" << endl;
} else {
cout << char(maxIndex+65) << endl;
}
}
'DevOps > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ Algorithm ] ๋ฐฑ์ค ์๊ณ ๋ฆฌ์ฆ 1152๋ฒ ๋จ์ด์ ๊ฐ์ (C++) (0) | 2024.06.02 |
---|---|
[ Algorithm ] ๋ฐฑ์ค ์๊ณ ๋ฆฌ์ฆ 1008๋ฒ A/B (C++) (2) | 2024.06.02 |
[ Algorithm ] ๋ฐฑ์ค ์๊ณ ๋ฆฌ์ฆ 1001๋ฒ A-B (C++) (0) | 2024.06.02 |
[ Algorithm ] ๋ฐฑ์ค ์๊ณ ๋ฆฌ์ฆ 1000๋ฒ A+B (C++) (0) | 2024.06.01 |