https://www.acmicpc.net/problem/9733
꿀벌이 하는 일은 다음과 같이 분류할 수 있다.
휴식(Re), 순찰(Pt), 방청소(Cc), 꽃가루 먹기(Ea), 새끼 돌보기(Tb), 벌집 짓기와 관리(Cm), 외부 활동(Ex)
한 꿀벌이 1시간 동안 한 일이 주어졌을 때, 각각을 몇 번 했고, 비율이 어떻게 되는지 구하는 프로그램을 작성하시오.
입력은 꿀벌이 한 일이 공백과 줄바꿈으로 구분되어서 주어진다. 최대 24개의 일을 한다.
각각의 일을 한 횟수와 비율을 공백으로 구분하여 출력한다. 출력은 {Re,Pt,Cc,Ea,Tb,Cm,Ex} 순서대로 하며, 비율은 소수점 둘째 자리까지 출력한다. 주어진 목록에 없는 일은 출력하지 않는다.
입력의 마지막 줄에는 "Total < total > 1.00"을 출력하며, < total >은 꿀벌이 한 일의 개수이다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] str = {"Re","Pt","Cc","Ea","Tb","Cm","Ex"};
HashMap<String,Integer> hashMap = new HashMap<>();
for(String s: str){
hashMap.put(s,0);
}
double total=0;
String data="";
while((data=br.readLine())!=null){
String[] arr = data.split(" ");
total+=arr.length;
for(int i=0;i<arr.length;i++){
if(hashMap.containsKey(arr[i])){
hashMap.put(arr[i],hashMap.get(arr[i])+1);
}
}
}
for(int i=0;i<7;i++){
System.out.printf("%s %d %.2f\n",str[i],hashMap.get(str[i]),hashMap.get(str[i])/total);
}
System.out.printf("%s %d %.2f\n","Total",(int)total,1.00);
}
}
key는 꿀벌이 한 일, value는 해당 일을 한 횟수를 이용해 HashMap
을 이용해 나타내었다.
hashMap.put(arr[i],hashMap.get(arr[i])+1
부분이 꿀벌이 한 일에 해당할 경우 해당 횟수를 증가시키는 부분이다.