문제 풀이/백준
[백준] 4358번. 생태학(JAVA)
27200
2025. 2. 6. 14:06
문제
https://www.acmicpc.net/problem/4358
풀이(15분)
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line;
double n = 0;
TreeMap<String, Integer> map = new TreeMap<>();
while ((line = br.readLine()) != null && !line.isEmpty()) { // 빈 줄도 종료 조건에 포함
n++;
map.put(line, map.getOrDefault(line, 0) + 1);
}
for (Map.Entry<String, Integer> entry : map.entrySet()) {
double percentage = (entry.getValue() / n) * 100;
System.out.println(entry.getKey() + " " + String.format("%.4f", percentage));
}
}
}
map을 사용해도 시간 내에 해결할 수 있을까? + 메모리는 괜찮을까?라는 고민을 제외하면 어려운 문제는 아니었다.
다만 IDE의 자동완성 기능을 꺼두었기에 메서드가 생각보다 떠오르지않아 구글링을 몇 번 했다.
1. line = br.readLine() != null 입력이 끝이 없이 들어오는 것이기 때문에 다음 구문을 통해 해결해주어야 한다.
->! line.isEmpty()가 있어야 ide에서도 엔터 두 번을 통해 답을 확인할 수 있다.
2. for-each 구문
-> 매번 쓰는 것이지만 생각보다 손에 잘 붙지 않는다. 연습을 더더욱 많이 하자!!
3. String.format
-> 이번에는 구글링 없이 해결했지만 확실한 것은 없으니 꾸준히 숙지하자.