๋ฌธ์ (์ถ์ฒ: 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์ ์ถ๋ ฅํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 9753_์ง ๊ณฑ (1) | 2024.07.23 |
---|---|
[Baekjoon] 3231_์นด๋๋์ด (0) | 2024.07.22 |
[Baekjoon] 2817_ALPS์ ํฌํ (0) | 2024.07.18 |
[Baekjoon] 3024_๋ง๋ผํค ํฑํํ (0) | 2024.07.17 |
[Baekjoon] 10656_์ญ์๋งํ์ด (2) | 2024.07.16 |