๐Ÿ•ธ Algorithm/๐Ÿ•ธ ๋ฐฑ์ค€ BaekJoon

[๋ฐฑ์ค€][java][1157][๋‹จ์–ด ๊ณต๋ถ€]

yeun.log 2024. 2. 8. 17:00
๋ฐ˜์‘ํ˜•

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Scanner;

// 1157	๋‹จ์–ด ๊ณต๋ถ€
public class Main {
	
	public static void main(String[] args) {

		Scanner in = new Scanner(System.in);
		
		final String[] word = in.next().toUpperCase().split("");
		in.close();
		
		int cnt = 1;
		int max = 0;
		
		String c = "";
		
		HashMap<Integer, ArrayList> map = new HashMap<>();
		
		Arrays.sort(word);
		
		for (int i = 0; i < word.length; i++) {
			ArrayList<String> cArr = new ArrayList<>(); 
					
			if (word[i].equals(word.length == i + 1 ? word[i] : word[i + 1])
				&& word.length != i + 1) {
				cnt++;
			}
			else {
				c = word[i];
				
				ArrayList<String> mapArr = (ArrayList<String>) map.get(cnt);
				
				if (mapArr != null ) {
					for (int j = 0; j < mapArr.size(); j++) {
						cArr.add(mapArr.get(j));
					}
				}
				
				cArr.add(c);
				map.put(cnt, cArr);
				
				cnt = 1;
			}
		}
		
		for (Object key : map.keySet().toArray()) {
			max = Math.max((int) key, max);
		}
		
		ArrayList<String> cArr = map.get(max);
		
		System.out.print(cArr.size() != 1 ? "?" : cArr.get(0));
	}
}

 

  • ์ž…๋ ฅ๋ฐ›์€ ๊ฐ’์„ ๋Œ€๋ฌธ์žํ˜•ํƒœ๋กœ ๋ฐฐ์—ด์— ๋‹ด์•„
    final String[] word = in.next().toUpperCase().split("");
  • ์ •๋ ฌ ํ•˜๋ฉด
    Arrays.sort(word);
    -> [I, I, I, I, M, P, S, S, S, S] ์ด๋Ÿฐ ํ˜•ํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  • for๋ฌธ์œผ๋กœ ๋ฐฐ์—ด์„ ๋Œ๋ ค ์ด์ „ ๊ฐ’๊ณผ ๊ฐ™๊ฑฐ๋‚˜ ๋งˆ์ง€๋ง‰์ˆœ๋ฒˆ์ด ์•„๋‹ˆ๋ฉด ๊ฐฏ์ˆ˜๋ฅผ cnt++ ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค.
  • ๊ฐฏ์ˆ˜๋ฅผ map์˜ key๋กœ, ๋ฌธ์ž๊ฐ’์€ arrayList์— ๋‹ด์•„์ค๋‹ˆ๋‹ค.
  • ๊ฐฏ์ˆ˜์ธ key์—์„œ ์ตœ๋Œ€๊ฐ’์„ ์ฐพ์•„ 1๊ฐœ๊ฐ€ ์•„๋‹ˆ๋ฉด ?๋ฅผ ์ถœ๋ ฅ.
    ๊ทธ๊ฒŒ ์•„๋‹ˆ๋ผ๋ฉด ๊ฐ’์„ ์ถœ๋ ฅํ•ด์ค๋‹ˆ๋‹ค.
๋ฐ˜์‘ํ˜•