알고리즘 문제 풀이를 블로그에 올리는 이유는 풀이, 코드를 기록하기 위함이니
앞으로 문제를 다 긁어오기보다 링크만 두고 풀이가 잘 보이도록 포스팅 할 예정입니다!
이 문제는 입력된 수종을 사전순으로 정렬하고, 전체 입력 중에서 각 수종이 차지하는 비중(중복값)을 소수점 넷째자리까지 출력하는 문제이다.
TreeMap
!int tatalNum
정의, 하나씩 입력될 때마다 ++import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Iterator;
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> treeMap = new TreeMap<>();
int totalNum = 0;
String tree = br.readLine();
while (tree != null) {
treeMap.put(tree, treeMap.getOrDefault(tree, 0) + 1);
totalNum++;
tree = br.readLine();
}
Iterator<String> keyAll = treeMap.keySet().iterator();
String key = null;
while(keyAll.hasNext()) {
key = keyAll.next();
double per = (double)(treeMap.get(key)*100)/totalNum;
System.out.println(key + " " + String.format("%.4f", per));
}
}
}