728x90
반응형
https://www.acmicpc.net/problem/4358
풀이
이 문제는 Map을 이용하여 풀면 됩니다.
while((str = br.readLine()) != null)로 입력받지 않을때까지 입력받습니다.
만약 map에 이미 있다면 해당 map의 value값을 +1 시켜줍니다.
그러면서 차지하는 %를 구해야하므로 전체갯수를 세기 위하여 count를 ++ 시켜줍니다.
Map을 처음부터 보면서 value 값에 100을 곱하고 전체 갯수로 나눠줍니다.(% 구하기)
소수점 4째 자리에서 반올림 해줘야 하므로 String.format("%.4f", value)를 사용해 출력을 해줍니다.
소스코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.TreeMap;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
TreeMap<String, Integer> map = new TreeMap<>();
String str = "";
int count = 0;
while((str = br.readLine()) != null) {
map.put(str, !map.containsKey(str) ? 1 : map.get(str) + 1);
count++;
}
Object[] k = map.keySet().toArray();
Arrays.sort(k);
StringBuilder sb = new StringBuilder();
for(Object o : k) {
String key = (String) o;
double value = (double)(map.get(key)*100)/count;
sb.append(key).append(" ").append(String.format("%.4f", value)).append("\n");
}
System.out.print(sb);
}
}
728x90
반응형
'백준 > 1 - 5000' 카테고리의 다른 글
[백준] 4889번 : 안정적인 문자열(JAVA) (0) | 2021.07.30 |
---|---|
[백준] 1918번 : 후위 표기식(JAVA) (0) | 2021.07.27 |
[백준] 4562번 : No Brainer(JAVA) (0) | 2021.07.22 |
[백준] 2824번 : 최대공약수(JAVA) (0) | 2021.07.12 |
[백준] 2493번 : 탑 (JAVA) (0) | 2021.07.12 |
댓글