๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 13281_Look for the Winner!

๋ฟŒ์•ผ._. 2024. 12. 23. 15:47
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/13281)

< Look for the Winner! >

 

๋ฌธ์ œ ํ’€์ด 

 

์šฐ์Šน์ž๊ฐ€ ๊ฒฐ์ • ๋‚˜๋Š” ์กฐ๊ฑด

1) ํˆฌํ‘œ์ˆ˜๊ฐ€ 1์ผ ๋•Œ

2) ๋‘ ๋ฒˆ์งธ๋กœ ํฐ ํˆฌํ‘œ์ˆ˜ + ๋‚จ์€ ํˆฌํ‘œ์ˆ˜ < ๊ฐ€์žฅ ํฐ ํˆฌํ‘œ์ˆ˜

3) ํ›„๋ณด์ž ํ•œ ๋ช…์ด ์ ˆ๋ฐ˜ ๋„˜๋Š” ํ‘œ๋ฅผ ๊ฐ€์กŒ์„ ๋•Œ

 

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.StringTokenizer;

public class _13281_ { // Look for the Winner!

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		StringTokenizer st;
        
		int n = -1;
        
		HashMap<Character, Integer> map = new HashMap<>();
		String result = null;
		
		while ((n = Integer.parseInt(bf.readLine())) != 0) {
			st = new StringTokenizer(bf.readLine());
			int max = -1, idx = -1;
            
			for (int i = 0; i < n; i++) {
				char x = st.nextToken().charAt(0);
                
				if (map.containsKey(x)) {
					map.replace(x, map.get(x) + 1);
				} else {
					map.put(x, 1);
				}
				if (max < map.get(x)) {
					max = map.get(x);
					result = x + "";
				}
                
				if (n == 1) {
					idx = 1;
					break;
				}
				List<Integer> list = new ArrayList<>(map.values());
				Collections.sort(list, Collections.reverseOrder());
                
				if ((list.size() > 1 && list.get(0) > list.get(1) + (n - (i + 1)))
						|| (list.size() == 1 && i == n / 2)) {
					idx = i + 1;
					break;
				}
			}
			if (idx == -1) {
				bw.write("TIE\n");
			} else {
				bw.write(result + " " + idx + "\n");
			}
			map.clear();
		}
		bw.flush();
	}
}
๋ณ€์ˆ˜)
n : ํˆฌํ‘œ์ˆ˜
map : HashMap <ํ›„๋ณด์ž, ํˆฌํ‘œ์ˆ˜>
result : ์šฐ์Šน์ž
max, idx : ๊ฐ€์žฅ ๋งŽ์€ ํˆฌํ‘œ์ˆ˜, ์šฐ์Šน์ž๊ฐ€ ๊ฒฐ์ •๋  ๋•Œ์˜ ํˆฌํ‘œ์ˆ˜
x : ํ›„๋ณด์ž
list : HashMap values -> ArrayList

 

n์ด 0์ด ์•„๋‹ ๋•Œ๊นŒ์ง€ ๋‹ค์Œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

1) n๋งŒํผ ํˆฌํ‘œ ๊ฒฐ๊ณผ๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ HashMap์— ์ €์žฅํ•˜๋ฉฐ ์ตœ๋‹ค ๋“ํ‘œ ์ˆ˜์™€ ์ตœ๋‹ค ๋“ํ‘œ ํ›„๋ณด์ž๋ฅผ ์ €์žฅํ•œ๋‹ค.

2) n์ด 1์ด๋ผ๋ฉด ์ž…๋ ฅ๋ฐ›์€ ํ›„๋ณด์ž๊ฐ€ ์ •๋‹ต์ด๋ฏ€๋กœ ์ข…๋ฃŒํ•œ๋‹ค.

3) HashMap์˜ value ๊ฐ’์„ ArrayList๋กœ ๋ณ€ํ™˜ ํ›„ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.

4) ( ๋‘ ๋ฒˆ์งธ๋กœ ํฐ ํˆฌํ‘œ์ˆ˜ + ๋‚จ์€ ํˆฌํ‘œ์ˆ˜ < ๊ฐ€์žฅ ํฐ ํˆฌํ‘œ์ˆ˜ ) ๋˜๋Š” ( ํ›„๋ณด์ž ํ•œ ๋ช…์ด ์ ˆ๋ฐ˜ ๋„˜๋Š” ํ‘œ๋ฅผ ๊ฐ€์กŒ์„ ๋•Œ ) ์ด ๊ฒฝ์šฐ ์šฐ์Šน์ž๊ฐ€ ํ™•์ •๋˜๋ฏ€๋กœ idx ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•œ ํ›„ ์ข…๋ฃŒํ•œ๋‹ค.

5) idx๊ฐ€ -1์ด๋ผ๋ฉด TIE๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  -1์ด ์•„๋‹ˆ๋ผ๋ฉด result์™€ idx๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.



 

'๐ŸŒžAlgorithm > ๐Ÿ”ฅBaekjoon' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Baekjoon] 9979_Does This Make Me Look Fat?  (0) 2024.12.26
[Baekjoon] 27035_Bovine Ballroom Dancing  (0) 2024.12.24
[Baekjoon] 21208_Gratitude  (1) 2024.12.20
[Baekjoon] 15282_Frosh Week  (0) 2024.12.19
[Baekjoon] 5078_Shirts  (0) 2024.12.18