๋ฌธ์
์ํ๋ฒณ ๋์๋ฌธ์๋ก ๋ ๋จ์ด๊ฐ ์ฃผ์ด์ง๋ฉด, ์ด ๋จ์ด์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋ ์ํ๋ฒณ์ด ๋ฌด์์ธ์ง ์์๋ด๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋จ, ๋๋ฌธ์์ ์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๋๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ํ๋ฒณ ๋์๋ฌธ์๋ก ์ด๋ฃจ์ด์ง ๋จ์ด๊ฐ ์ฃผ์ด์ง๋ค. ์ฃผ์ด์ง๋ ๋จ์ด์ ๊ธธ์ด๋ 1,000,000์ ๋์ง ์๋๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ด ๋จ์ด์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋ ์ํ๋ฒณ์ ๋๋ฌธ์๋ก ์ถ๋ ฅํ๋ค. ๋จ, ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋ ์ํ๋ฒณ์ด ์ฌ๋ฌ ๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ์๋ ?๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
Mississipi
์์ ์ถ๋ ฅ 1
?
์์ ์ ๋ ฅ 2
zZa
์์ ์ถ๋ ฅ 2
Z
์์ ์ ๋ ฅ 3
z
์์ ์ถ๋ ฅ 3
Z
์์ ์ ๋ ฅ 4
baaa
์์ ์ถ๋ ฅ 4
A
ํ์ด
1. ๋ฌธ์ s๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค
2. ์ํ๋ฒณ ํ์๋ฅผ ์ ์ฅํ ๋ฐฐ์ด array[26]๋ฅผ ์ ์ธ, 0์ผ๋ก ์ด๊ธฐํ
3. ๋ฌธ์ s์ ์ฒซ๋ฒ์งธ ๊ธ์๋ถํฐ
3-1. ๋๋ฌธ์์ธ์ง ์๋ฌธ์์ธ์ง ์์คํค์ฝ๋๋ฅผ ์ด์ฉํด ํ๋จํ์ฌ ๊ฐ์ ๋ฐฐ์ด์ ์์น์ ์ ์ฅํ ์ ์๋๋ก ํจ
3-2. ๋ฐฐ์ด์ ํด๋น ์ํ๋ฒณ์ ๋ง๋ ์์น์ ๊ฐ์ ์ฆ๊ฐ์ํจ๋ค.
4. ๋ฐฐ์ด์ ๊ฐ์ฅ ๋ง์ ํ์๋ฅผ max์, ๊ทธ ํ์์ ๋ฐฐ์ด index๋ฅผ maxnum์ ์ ์ฅ
5. max์ธ ์ํ๋ฒณ์ด ๋ ์๋์ง ๊ฒ์ฌ
5-1. max๊ฐ ์ฌ๋ฌ๊ฐ๋ฉด '?' ์ถ๋ ฅ
5-2. max๊ฐ ํ๋๋ฉด ํด๋น ์ํ๋ฒณ์ ๋๋ฌธ์๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํด maxnum + 65 ๋ฅผ charํ์ผ๋ก ์ถ๋ ฅ
import java.util.Scanner;
public class B1157 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
int[] array = new int [26]; // ์ํ๋ฒณ ๋ฐฐ์ด
for(int i = 0; i < array.length; i++) { // 0์ผ๋ก ์ด๊ธฐํ
array[i] = 0;
}
for(int i = 0; i < s.length(); i++) {
int num = s.charAt(i) < 91 ? s.charAt(i)-65 : s.charAt(i)-97;
// 'A' ์์คํค์ฝ๋ 65, 'a' 97์ด๋ผ. Aa๋ ๋ฐฐ์ด์ 0๋ฒ์งธ
array[num]++; // ํด๋น ์ํ๋ฒณ ๋ฐฐ์ด++
}
int max = array[0];
int maxnum = 0;
char result = 0;
for(int i = 0; i < array.length; i++) { // ๊ฐ์ฅ ๋ง์ ํ์ max์ ์ ์ฅ
max = max > array[i] ? max : array[i];
maxnum = max > array[i] ? maxnum : i;
}
for(int i = 0; i < array.length; i++) { // ๊ฐ์ฅ ๋ง์ ํ์๊ฐ ์ฌ๋ฌ๊ฐ์ธ์ง ๊ฒ์ฌ
if(max == array[i] && maxnum != i) { // ์ค๋ณต์ผ ๊ฒฝ์ฐ ? ์ ์ฅ
result = '?';
break;
} else {
result = (char) (maxnum+65); // ๋๋ฌธ์ ์ถ๋ ฅํ๊ธฐ์ํด +65
}
}
System.out.println(result);
}
}