문제 내용은 입력으로 받는 값이 +로 들어왔다 -로 빠져나가면 야근이 아니고, +가 없는데 -면 야근이고, +인데 뒤에 더 없으면 야근이 된다.
사람명은 모두 소문자므로 중복 처리를 걱정할 필요는 없고 야근과 야근이 아닌 공식만 잘 확인해주면 되는데
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));
int count = Integer.parseInt(br.readLine());
HashMap<String, Integer> map = new HashMap<>();
int total = 0;
for (int i = 0; i < count; i++) {
String[] split = br.readLine().split(" ");
if (split[1].equals("-")) {
int current = map.getOrDefault(split[0], 0);
if (current > 0) {
map.replace(split[0], current - 1);
} else {
total++;
}
} else {
map.merge(split[0], 1, Integer::sum);
}
}
for (Map.Entry<String, Integer> entry : map.entrySet()) {
total += entry.getValue();
}
System.out.println(total);
}
}
문제를 풀어보면 Map을 선언한 뒤 입력으로 +를 받으면 1씩 늘려가며 저장해두고 있다가 -를 받으면 -1씩 해주는 식으로 진행하다가 0인데 -로 들어오면 그때는 야근이므로 더해주는 식으로 진행하면
결국 +만 남게 되는데 map.entrySet() 으로 모든 항목을 꺼내주면서 +를 모두 더해준 뒤 출력해주면 끝이다. 문제 풀이 시 일반 근무와 야근을 판별하는 게 중요하기 때문에 문제를 쉽게 풀어도 기준을 모르면 상당히 많은 시간을 허비하게 될 수 있다
Leave a Reply