๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 15595_์ •๋‹ต ๋น„์œจ ๊ณ„์‚ฐํ•˜๊ธฐ

๋ฟŒ์•ผ._. 2024. 7. 19. 14:11
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/15595)

< ์ •๋‹ต ๋น„์œจ ๊ณ„์‚ฐํ•˜๊ธฐ >

 

๋ฌธ์ œ ํ’€์ด 

 

์œ ์ €๊ฐ€ ๋ฌธ์ œ๋ฅผ ๋งžํ˜”๋‹ค๋ฉด ๋ถ„์ž์— 1์„, ๋ถ„๋ชจ์— ์‹œ๋„ ํšŸ์ˆ˜๋ฅผ ๋”ํ•œ๋‹ค. 

์ฃผ์˜) ์ด๋ฏธ ์ •๋‹ต์ฒ˜๋ฆฌ ๋œ ์ดํ›„์—๋Š” ํ‹€๋ฆฌ๊ฑฐ๋‚˜ ๋งž์•„๋„ ์ •๋‹ต ๋น„์œจ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
import java.util.StringTokenizer;

public class _15595_ { // ์ •๋‹ต ๋น„์œจ ๊ณ„์‚ฐํ•˜๊ธฐ

	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, Integer> map = new HashMap<>();
		Set<String> set = new HashSet<>();
		int numerator = 0, denominator = 0;
		for (int i = 0; i < N; i++) {
			st = new StringTokenizer(bf.readLine());

			st.nextToken();
			String id = st.nextToken();
			int result = Integer.parseInt(st.nextToken());

			if (id.equals("megalusion")) {
				continue;
			}
			if (result == 4) {
				if (!set.contains(id)) {
					if (map.containsKey(id)) {
						denominator += map.get(id) + 1;
					} else {
						denominator += 1;
					}
					set.add(id);
					numerator += 1;
				}
			} else {
				if (!map.containsKey(id)) {
					map.put(id, 1);
				} else {
					map.replace(id, map.get(id) + 1);
				}
			}
		}
		if (denominator == 0) {
			System.out.println(0);
		} else {
			System.out.println(((double) numerator / denominator) * 100);
		}
	}
}
๋ณ€์ˆ˜)
N : ์ œ์ถœ ํšŸ์ˆ˜
map : <id, ํ‹€๋ฆฐ ํšŸ์ˆ˜>๋ฅผ ์ €์žฅํ•˜๋Š” HashMap
set : ๋ฌธ์ œ๋ฅผ ๋งž์€ ์‚ฌ๋žŒ์˜ ์•„์ด๋””๋ฅผ ์ €์žฅํ•˜๋Š” HashSet
numerator, denominator : ๋ถ„์ž(๋ฌธ์ œ๋ฅผ ๋งž์€ ์‚ฌ๋žŒ์˜ ์ˆ˜), ๋ถ„๋ชจ(๋ฌธ์ œ๋ฅผ ๋งž์€ ์‚ฌ๋žŒ์˜ ์ˆ˜ + ๋ฌธ์ œ๋ฅผ ๋งž์€ ์‚ฌ๋žŒ์ด ๊ทธ ๋ฌธ์ œ๋ฅผ ๋งž๊ธฐ ์ „๊นŒ์ง€ ํ‹€๋ฆฐ ํšŸ์ˆ˜์˜ ์ด ํ•ฉ)
id, result : ์œ ์ € ์•„์ด๋””, ์ฑ„์  ๊ฒฐ๊ณผ

 

๋ฌธ์ œ์˜ ์ด ์ œ์ถœ ํšŸ์ˆ˜ N์„ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ์ œ์ถœ ํšŸ์ˆ˜๋งŒํผ ๋‹ค์Œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

1) ์œ ์ € ์•„์ด๋”” id์™€ ์ฑ„์  ๊ฒฐ๊ณผ result๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.

2) ์œ ์ € ์•„์ด๋””๊ฐ€ ๊ด€๋ฆฌ์ž๋ผ๋ฉด 1)๋กœ ๋Œ์•„๊ฐ„๋‹ค.

3) ์œ ์ € ์•„์ด๋””๊ฐ€ ๊ด€๋ฆฌ์ž๊ฐ€ ์•„๋‹ˆ๊ณ  ์ฑ„์  ๊ฒฐ๊ณผ๊ฐ€ 4๋ผ๋ฉด ๋ฌธ์ œ๋ฅผ ๋งžํžŒ ๊ฒƒ์„ ๋œปํ•œ๋‹ค. set์„ ํ™•์ธํ•ด ๋ฌธ์ œ๋ฅผ ์ฒ˜์Œ ๋งžํžŒ ๊ฒƒ์ด๋ผ๋ฉด ๋ถ„๋ชจ์— ํ‹€๋ฆฐ ํšŸ์ˆ˜์™€ 1์„ ๋”ํ•œ๋‹ค. set์— ์•„์ด๋””๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถ„์ž์—๋„ 1์„ ๋”ํ•œ๋‹ค.

4) ์œ ์ € ์•„์ด๋””๊ฐ€ ๊ด€๋ฆฌ์ž๊ฐ€ ์•„๋‹ˆ๊ณ  ์ฑ„์  ๊ฒฐ๊ณผ๊ฐ€ 4๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ํ‹€๋ฆฐ ๊ฒƒ์ด๋ฏ€๋กœ map์— ์œ ์ € ์•„์ด๋””์™€ ํ‹€๋ฆฐ ํšŸ์ˆ˜๋ฅผ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

 

์ตœ์ข… ๋ถ„๋ชจ๊ฐ€ 0์ด๋ผ๋ฉด 0์„ ์ถœ๋ ฅํ•˜๊ณ  0์ด ์•„๋‹ˆ๋ผ๋ฉด ๋ถ„๋ชจ/๋ถ„์ž * 100์„ ์ถœ๋ ฅํ•œ๋‹ค.