https://www.acmicpc.net/problem/9733
9733번: 꿀벌
각각의 일을 한 횟수와 비율을 공백으로 구분하여 출력한다. 출력은 {Re,Pt,Cc,Ea,Tb,Cm,Ex} 순서대로 하며, 비율은 소수점 둘째 자리까지 출력한다. 주어진 목록에 없는 일은 출력하지 않는다. 입력의
www.acmicpc.net
난이도 : S5
구현 : 문자열, 해쉬맵
문제 풀이
- HashMap 자료구조 사용
- 단순 구현
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.StringTokenizer;
/*author : DDing77*/
public class Main {
private final String[] works = {"Re", "Pt", "Cc", "Ea", "Tb", "Cm", "Ex"};
private HashMap<String, Integer> worksMap;
public void makeWorks() {
worksMap = new HashMap<>();
for (int i = 0; i < 7; i++) {
worksMap.put(works[i], 0);
}
}
public String getResult(double total) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 7; i++) {
sb.append(String.format("%s %d %.2f", works[i], worksMap.get(works[i]), worksMap.get(works[i]) / total)).append('\n');
}
sb.append("Total ").append((int) total).append(" 1.00").append('\n');
return sb.toString();
}
public void solution() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
makeWorks();
double total = 0;
String input = "";
while ((input = br.readLine()) != null) {
st = new StringTokenizer(input);
while (st.hasMoreTokens()) {
total++;
String cur = st.nextToken();
if (worksMap.containsKey(cur)) {
worksMap.put(cur, worksMap.get(cur) + 1);
}
}
}
System.out.print(getResult(total));
}
public static void main(String[] args) throws IOException {
new Main().solution();
}
}
'Algorithm, Problem Solving > 백준(boj)' 카테고리의 다른 글
[백준][Java] 2565 - 전깃줄 (0) | 2023.03.23 |
---|---|
[백준][Java] 24228 - 젓가락 (0) | 2023.03.23 |
[백준][java] 25644 - 최대 상승 (0) | 2023.03.22 |
[백준][java] 10431 - 줄세우기 (0) | 2023.03.22 |
[백준][java] 14492 - 부울행렬의 부울곱 (0) | 2023.03.21 |
댓글