[백준] 4358 생태학 -Java / Python
입력의 마지막에 대한 조건이 없는 문제다. BufferedReader를 사용할 경우 입력값이 null이거나 공백일 경우 입력을 종료하도록 작성했다.
해시 맵 느낌이 강하게 드는 문제이다.
key값으로는 나무 이름을, value값으로는 이름이 나오는 횟수를 저장하고 입력이 끝난 후에 key값을 기준으로 정렬을 진행한 뒤 key값에 대한 비율을 출력해 주면 된다.
Java
key값에 대해 정렬을 수행할 때 keySet() 함수를 사용해서 Object타입의 배열을 만들어주고 sort함수로 정렬을 수행했다.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
HashMap<String, Integer> hash = new HashMap<>();
int count = 0;
while(true){
String tree = br.readLine();
if(tree == null || tree.equals("")){
break;
}
if(!hash.containsKey(tree)){
hash.put(tree,1);
}else{
hash.put(tree,hash.get(tree)+1);
}
count++;
}
Object[] str = hash.keySet().toArray();
Arrays.sort(str);
for(int i=0; i<str.length; i++){
String key = (String)str[i];
String value = String.format("%.4f", (hash.get(key)*100.0 / count));
sb.append(key + " "+value+'\n');
}
System.out.print(sb);
}
}
Python
파이썬에서는 딕셔너리를 사용해서 간단하게 풀 수 있다.
import sys
input = sys.stdin.readline
tree = {}
count = 0
while True:
str = input().rstrip()
if not str:
break
if str not in tree:
tree[str] =1
else:
tree[str] = tree[str] + 1
count = count + 1
tree2 = list(tree.keys())
tree2.sort()
for i in tree2:
print('%s %.4f' %(i, tree[i] / count * 100.0))
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 2075 N번째 큰 수 -Java / Python (0) | 2022.02.16 |
---|---|
[백준] 7662 이중 우선순위 큐 -Java (0) | 2022.02.16 |
[백준] 17298 오큰수 -Java / Python (0) | 2022.02.14 |
[백준] 1991 트리 구조 -Java / Python (0) | 2022.02.14 |
[백준] 1655 가운데를 말해요 - Java / Python (0) | 2022.02.13 |
댓글
이 글 공유하기
다른 글
-
[백준] 2075 N번째 큰 수 -Java / Python
[백준] 2075 N번째 큰 수 -Java / Python
2022.02.16 -
[백준] 7662 이중 우선순위 큐 -Java
[백준] 7662 이중 우선순위 큐 -Java
2022.02.16 -
[백준] 17298 오큰수 -Java / Python
[백준] 17298 오큰수 -Java / Python
2022.02.14 -
[백준] 1991 트리 구조 -Java / Python
[백준] 1991 트리 구조 -Java / Python
2022.02.14