๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 4408_Election

๋ฟŒ์•ผ._. 2025. 2. 12. 00:07
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/4408)

< Election >

 

๋ฌธ์ œ ํ’€์ด 

 

HashMap์— key ๊ฐ’์œผ๋กœ ํ›„๋ณด์ž ์ด๋ฆ„์„, value๋กœ ์ •๋‹น ์ด๋ฆ„์„ ์ €์žฅํ•œ๋‹ค.

๋˜ ๋‹ค๋ฆ„ HashMap์— key ๊ฐ’์œผ๋กœ ๋ฝ‘ํžŒ ํ›„๋ณด์ž ์ด๋ฆ„์„, value๋กœ ๋ฝ‘ํžŒ ํšŸ์ˆ˜๋ฅผ ์ €์žฅํ•œ๋‹ค.

๊ฐ€์žฅ ๋งŽ์ด ๋ฝ‘ํžŒ ์‚ฌ๋žŒ์˜ ์ •๋‹น ์ด๋ฆ„์„ ๊ตฌํ•œ๋‹ค.

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.StringTokenizer;

public class _4408_ { // Election

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;

		int n = Integer.parseInt(bf.readLine());

		HashMap<String, String> map = new HashMap<>();
		for (int i = 0; i < n; i++) {
			String name = bf.readLine();
			String party = bf.readLine();

			map.put(name, party);
		}

		int m = Integer.parseInt(bf.readLine());

		HashMap<String, Integer> election = new HashMap<>();
		for (int i = 0; i < m; i++) {
			String name = bf.readLine();

			if (map.containsKey(name)) {
				if (election.containsKey(name)) {
					election.put(name, election.get(name) + 1);
				} else {
					election.put(name, 1);
				}
			}
		}

		ArrayList<String> names = new ArrayList<>(election.keySet());
		Collections.sort(names, new Comparator<String>() {
			@Override
			public int compare(String o1, String o2) {
				return election.get(o2).compareTo(election.get(o1));
			}
		});

		if (names.size() == 0) {
			System.out.println("tie");
		} else if (names.size() == 1) {
			System.out.println(map.get(names.get(0)));
		} else {
			if (election.get(names.get(0)) == election.get(names.get(1))) {
				System.out.println("tie");
			} else {
				System.out.println(map.get(names.get(0)));
			}
		}
	}
}

 

๋ณ€์ˆ˜)
n : ํ›„๋ณด์ž ์ด๋ฆ„๊ณผ ์ •๋‹น ์ด๋ฆ„์˜ ์ˆ˜
map : HashMap <String, String>
m : ํˆฌํ‘œ์ˆ˜
election : HashMap <String, Integer>
name : ๋ฝ‘ํžŒ ํ›„๋ณด์ž ์ด๋ฆ„
names : election HashMap์˜ key๊ฐ’ -> ArrayList

 

n์„ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. n๋งŒํผ ํ›„๋ณด์ž ์ด๋ฆ„๊ณผ ์ •๋‹น ์ด๋ฆ„์„ ์ž…๋ ฅ๋ฐ›์•„ HashMap์— ์ €์žฅํ•œ๋‹ค. 

m์„ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. m๋งŒํผ ๋ฝ‘ํžŒ ํ›„๋ณด์ž ์ด๋ฆ„์„ ์ž…๋ ฅ๋ฐ›์•„ HashMap์— ๋ฝ‘ํžŒ ํšŸ์ˆ˜๋ฅผ ์ €์žฅํ•œ๋‹ค. ์ด๋•Œ, ํ›„๋ณด์ž์— ์—†๋Š” ์ด๋ฆ„์ด๋ผ๋ฉด ๋ฌด์‹œํ•œ๋‹ค.

election HashMap์˜ key๊ฐ’์„ ArrayList๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ HashMap์˜ value ๊ธฐ์ค€ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค. ๋งŒ์•ฝ ArrayList์˜ ํฌ๊ธฐ๊ฐ€ 0์ด๋ผ๋ฉด "tie"๋ฅผ ์ถœ๋ ฅํ•˜๊ณ , ์‚ฌ์ด์ฆˆ๊ฐ€ 1์ด๋ผ๋ฉด ๋‹น์„ ์ž์ด๋ฏ€๋กœ ์ •๋‹น ์ด๋ฆ„์„ ์ถœ๋ ฅํ•œ๋‹ค. ๊ทธ ์™ธ์—๋Š” ์ตœ๋‹ค ๋“ํ‘œ์ˆ˜์ธ ํ›„๋ณด์ž๊ฐ€ ์—ฌ๋Ÿฌ ๋ช…์ด๋ผ๋ฉด "tie"๋ฅผ, ํ•œ ๋ช…์ด๋ผ๋ฉด ๊ทธ ํ›„๋ณด์ž์˜ ์ •๋‹น ์ด๋ฆ„์„ ์ถœ๋ ฅํ•œ๋‹ค.



 

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

[Baekjoon] 15044_Fase  (0) 2025.02.14
[Baekjoon] 15081_Is Everybody Appy?  (0) 2025.02.13
[Baekjoon] 4368_Babelfish  (0) 2025.02.11
[Baekjoon] 4675_Word Amalgamation  (0) 2025.02.10
[Baekjoon] 18706_Coffee  (0) 2025.02.07