์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ/BOJ_Java

[BOJ/Step7] 1157 : ๋‹จ์–ด ๊ณต๋ถ€ (JAVA)

NaNaRin๐Ÿ™ƒ 2021. 1. 11. 14:39

www.acmicpc.net/problem/1157

 

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);

	}

}