๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/2817)
< ALPS์ ํฌํ >
๋ฌธ์ ํ์ด
์ ์ฒด ์คํํ ์์ 5% ์ด์ ํ๋ฅผ ๋ฐ์ ์ฌ๋๋ค์ ํ๋ฅผ 1๋ถํฐ 14๋ก ๋๋ ๊ฐ์ ์ ๋ ฌํ์ฌ ๋ต์ ๊ตฌํ๋ค.
๋ต์ ์ถ๋ ฅํ ๋๋ 5% ์ด์ ํ๋ฅผ ๋ฐ์ ์ฌ๋ ์ค์์ ์นฉ์ 0๊ฐ ๋ฐ์๋๋ผ๋ ์ถ๋ ฅํด์ผ ํ๋ค. ์ฆ, 5% ์ด์ ํ๋ฅผ ๋ฐ์ ์ฌ๋์ ๋ชจ๋ ์ถ๋ ฅํด์ผ ํ๋ค.
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.StringTokenizer;
public class _2817_ { // ALPS์ ํฌํ
static class Participant implements Comparable<Participant> {
private String name;
private double value;
public Participant(String name, double value) {
this.name = name;
this.value = value;
}
@Override
public int compareTo(Participant o) {
return Double.compare(o.value, this.value);
}
}
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 X = Integer.parseInt(bf.readLine());
int N = Integer.parseInt(bf.readLine());
ArrayList<Participant> list = new ArrayList<>();
HashMap<String, Integer> map = new HashMap<>();
for (int i = 0; i < N; i++) {
st = new StringTokenizer(bf.readLine());
String name = st.nextToken();
int value = Integer.parseInt(st.nextToken());
if (value < X * 0.05) {
continue;
}
map.put(name, 0);
for (int j = 1; j <= 14; j++) {
list.add(new Participant(name, (double) value / j));
}
}
Collections.sort(list);
for (int i = 0; i < 14; i++) {
Participant participant = list.get(i);
if (map.containsKey(participant.name)) {
map.replace(participant.name, map.get(participant.name) + 1);
}
}
ArrayList<String> keySet = new ArrayList<>(map.keySet());
Collections.sort(keySet);
for (String name : keySet) {
bw.write(name + " " + map.get(name) + "\n");
}
bw.flush();
}
}
๋ณ์)
X, N : ์ฐธ๊ฐ์๋ค์ ์, ์คํํ์ ์
list : Participant๋ฅผ value๋ก ๊ฐ์ง๋ ArrayList
map : <String, Integer> HashMap, ์คํํ๋ณ ์ป์ ์นฉ ๊ฐ์๋ฅผ ์ ์ฅํ๊ธฐ ์ํ HashMap
name, value : ์คํํ ์ด๋ฆ, ๋ํ์
Participant
์คํํ ์ด๋ฆ name๊ณผ ๋ํ์๋ฅผ 1๋ถํฐ 14๋ก ๋๋ ๊ฐ์ธ value๋ฅผ ๋ณ์๋ก ๊ฐ์ง๋ฉฐ value๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ๋ค.
Main
์ฐธ๊ฐ์๋ค์ ์ X์ ์คํํ์ ์ N์ ์ ๋ ฅ๋ฐ๋๋ค. ์คํํ ์๋งํผ ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
1) ์คํํ์ ์ ๋ณด - ์คํํ์ ์ด๋ฆ name๊ณผ ๋ํ์ value๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค.
2) ๋ํ์๊ฐ (์ฐธ๊ฐ์์ ์ * 0.05) ๋ณด๋ค ์๋ค๋ฉด ํ๋ณด์์ ์ ์ธํ๋ค.
3) ๋ํ์๊ฐ (์ฐธ๊ฐ์์ ์ * 0.05) ์ด์์ด๋ฉด map์ <์คํํ ์ด๋ฆ, 0>์ ์ ์ฅํ๋ค. list์ [์คํํ ์ด๋ฆ, ๋ํ์๋ฅผ 1๋ถํฐ 14๊น์ง ๋๋ ์]๋ฅผ ๋ณ์๋ก ๊ฐ์ง๋ Participant๋ฅผ ์ ์ฅํ๋ค.
list๋ฅผ ์ ๋ ฌํ ํ list์ 0๋ฒ์งธ ๊ฐ๋ถํฐ 13๋ฒ์งธ๊น์ง ์คํํ์ ์ด๋ฆ์ ํ์ธ ํ map์์ ์ฐพ์ value๋ฅผ 1 ๋ํ๋ค. ์ต์ข map์ key๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ์ฌ key๊ณผ value๋ฅผ ์ถ๋ ฅํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 3231_์นด๋๋์ด (0) | 2024.07.22 |
---|---|
[Baekjoon] 15595_์ ๋ต ๋น์จ ๊ณ์ฐํ๊ธฐ (0) | 2024.07.19 |
[Baekjoon] 3024_๋ง๋ผํค ํฑํํ (0) | 2024.07.17 |
[Baekjoon] 10656_์ญ์๋งํ์ด (2) | 2024.07.16 |
[Baekjoon] 2757_์์ (0) | 2024.07.15 |