import java.io.*;
import java.util.*;
class Main{
static BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
static BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
static StringBuilder sb=new StringBuilder();
static int N;
public static void main(String args[]) throws Exception {
N=Integer.parseInt(br.readLine());
int correctNum=0;
int countNum=0;
HashMap<String, Integer> map=new HashMap<>();
for(int iter=0;iter<N;iter++) {
String str[]=br.readLine().split(" ");
String userID=str[1];
if(userID.equals("megalusion")) continue;
Integer temp=map.get(userID);
if(temp==null) temp=0;
else if(temp<0) continue;
temp++;
if(Integer.parseInt(str[2])==4) {
correctNum++;
countNum+=temp;
temp*=-1;
}
map.put(userID, temp);
}
double answer;
if(countNum==0) answer=0;
else answer=(double)correctNum/(double)countNum;
System.out.println(answer*100);
}
}
아래 링크를 참고하여 문제를 풀어보았습니다.
해쉬맵을 이용해서 값을 관리했습니다.
String을 키로 설정하고 Integer을 값으로 설정해 아이디별 문제를 푼 개수를 저장하였고, 문제를 맞았을 시에는 Integer 의 값에 -1을 곱해 음수로 저장해 값을 관리했습니다.
'프로그래밍 문제 > BOJ(백준 온라인 저지)' 카테고리의 다른 글
[BOJ 1181번] 단어 정렬(JAVA) (0) | 2020.09.30 |
---|---|
[BOJ 1753번] 최단경로(JAVA) (0) | 2020.09.29 |
[BOJ 2206번] 벽 부수고 이동하기(JAVA) (0) | 2020.09.25 |
[BOJ 7569번] 토마토(JAVA) (0) | 2020.09.24 |
[BOJ 7576번] 토마토(JAVA) (0) | 2020.09.23 |