1157๋ฒ: ๋จ์ด ๊ณต๋ถ
์ํ๋ฒณ ๋์๋ฌธ์๋ก ๋ ๋จ์ด๊ฐ ์ฃผ์ด์ง๋ฉด, ์ด ๋จ์ด์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋ ์ํ๋ฒณ์ด ๋ฌด์์ธ์ง ์์๋ด๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋จ, ๋๋ฌธ์์ ์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๋๋ค.
www.acmicpc.net
๋ฌธ์
์ํ๋ฒณ ๋์๋ฌธ์๋ก ๋ ๋จ์ด๊ฐ ์ฃผ์ด์ง๋ฉด, ์ด ๋จ์ด์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋ ์ํ๋ฒณ์ด ๋ฌด์์ธ์ง ์์๋ด๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋จ, ๋๋ฌธ์์ ์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๋๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ํ๋ฒณ ๋์๋ฌธ์๋ก ์ด๋ฃจ์ด์ง ๋จ์ด๊ฐ ์ฃผ์ด์ง๋ค. ์ฃผ์ด์ง๋ ๋จ์ด์ ๊ธธ์ด๋ 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);
โ}
}