• 문제 링크
9733번: 꿀벌
각각의 일을 한 횟수와 비율을 공백으로 구분하여 출력한다. 출력은 {Re,Pt,Cc,Ea,Tb,Cm,Ex} 순서대로 하며, 비율은 소수점 둘째 자리까지 출력한다. 주어진 목록에 없는 일은 출력하지 않는다. 입력의
www.acmicpc.net
• 풀이 과정
Map.getOrDefault() 를 활용하여 각 일의 빈도 수를 저장하고, 일의 총 개수을 저장한다.
출력되어야 할 일의 순서를 배열에 구성하고 각각의 값의 비율을 구해 출력한다.
• 풀이 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
Map<String, Integer> map = new HashMap<>();
int cnt = 0;
String input;
while ((input = br.readLine()) != null) {
st = new StringTokenizer(input);
while (st.hasMoreTokens()) {
String key = st.nextToken();
map.put(key, map.getOrDefault(key, 0) + 1);
cnt++;
}
}
StringBuilder sb = new StringBuilder();
DecimalFormat df = new DecimalFormat(" 0.00");
for (String key : new String[]{"Re", "Pt", "Cc", "Ea", "Tb", "Cm", "Ex"}) {
int ratio = map.getOrDefault(key, 0);
sb.append(key).append(" ").append(ratio).append(df.format(ratio / (double) cnt)).append("\n");
}
bw.write(sb.append("Total ").append(cnt).append(" 1.00").toString());
bw.flush();
}
}
'Problem Solving > Baekjoon' 카테고리의 다른 글
[백준] 5464 주차장 - Data Structure / Java (0) | 2023.04.30 |
---|---|
[백준] 14911 궁합 쌍 찾기 - Data Structure / Java (0) | 2023.04.29 |
[백준] 12873 기념품 - Data Structure / Java (0) | 2023.04.27 |
[백준] 9575 행운의 수 - Data Structure / Java (0) | 2023.04.26 |
[백준] 16499 동일한 단어 그룹화하기 - Data Structure / Java (0) | 2023.04.25 |
댓글