https://www.acmicpc.net/problem/4358
4358번: 생태학
프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어
www.acmicpc.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
import java.io.*;
import java.util.*;
import static java.lang.Math.max;
public class Main {
public static int cnt=0;
public static HashMap<String,Integer>hashMap=new HashMap<String,Integer>();
public static HashMap<String,String>finalMap=new HashMap<String,String>();
public static void main(String[]args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
while(true){//EOF 판단
String s= br.readLine();
if(s==null||s.equals("")){
break;
}
cnt++;
hashMap.put(s, hashMap.getOrDefault(s,0)+1);
}
for(String s:hashMap.keySet()){
double percent=(double)hashMap.get(s)/(double)cnt;
finalMap.put(s,String.format("%.4f",percent*100));
}
List<String> keys = new ArrayList<>(finalMap.keySet());
Collections.sort(keys); //key를 기준으로 오름차순 정렬
for (String key : keys) {
System.out.println(key+" "+finalMap.get(key));
}
}
}
|
cs |
1.EOF판단
입력하는 값의 개수가 주어지는게 아니라 계속 값이 주어지니까 input 값이 공백이거나 null일때 while문을 끊어줘야한다.
2. HashMap에서 중복개수 확인
출력값이 species percent 이기 때문에 HashMap을 이용해줬고,
HashMap에서 중복 개수를 확인할 때
[Java] HashMap의 getOfDefault() : 중복 갯수 확인
getOfDefault() 메소드를 사용해서 배열의 중복되는 값의 갯수를 알아보자!
velog.io
getOrDefault를 사용한다.
[JAVA] Map - getOrDefault 이란? 사용법 및 예제
getOrDefault - 찾는 키가 존재한다면 찾는 키의 값을 반환하고 없다면 기본 값을 반환하는 메서드 사용 방법 getOrDefault(Object key, V DefaultValue) 매개 변수 : 이 메서드는 두 개의 매개 변수를 허용합니.
junghn.tistory.com
getOrDefault(key,defaultValue) 순으로 쓰는데 key는 값을 가져와야하는 요소의 키이고
defaultValue는 키에 해당하는 값이 없는 경우 반환되어야 하는 기본 값이다.
hashMap.put(s, hashMap.getOrDefault(s,0)+1);
s는 key이고 s에 해당하는 value가 없을 경우 0을 반환하고 그게 아니면 원래 value값에서 1을 더해준다는 의미이다.
3. HashMap에서 key값을 기준으로 오름차순 정렬
key값을 기준으로 정렬하고 싶을 때는 TreeMap을 사용한다.
https://woovictory.github.io/2020/11/10/Map-Sort/
[Java] Map 정렬
Prologue Java에서 HashMap을 사용하면서 정렬이 필요할 때, 어떻게 정렬해야 하는지에 대해 정리한다.
woovictory.github.io
--> HashMap의 key들을 담아줄 keys라는 리스트를 만들고
--> keys리스트를 오름차순 정렬한다.
keySet()
https://tychejin.tistory.com/31
[Java] Map 전체 출력(entrySet, keySet, Iterator)
Map에 값을 전체 출력하기 위해서는 entrySet(), keySet() 메소드를 사용하면 되는데 entrySet() 메서드는 key와 value의 값이 모두 필요한 경우 사용하고, keySet() 메서드는 key의 값만 ..
tychejin.tistory.com
keySet는 key값이 필요할때만 사용
entrySet는 key와 value 모두 필요할 때 사용
'Java > 백준' 카테고리의 다른 글
[java 백준] 실버 5/1292번 쉽게 푸는 문제 (0) | 2021.09.19 |
---|---|
[java 백준] 실버 5/ 14912번 숫자 빈도수 (0) | 2021.07.26 |
[java 백준] 실버 5/ 16208번 귀찮음 (0) | 2021.07.20 |
[java 백준] 실버 4/ 1676번 팩토리얼 0의 개수 (0) | 2021.07.19 |
[java 백준] 브론즈 2/ 1592번 영식이와 친구들 (0) | 2021.07.19 |
댓글