Notice
Recent Posts
Recent Comments
Link
Dev.baelanche
[백준 11946] ACM-ICPC 본문
반응형
위 문제를 풀기위한 구조들로
1. 팀 번호, 문제 번호 별로 푸는데 걸린시간을 저장한 배열
int t[][] = new int[n+1][m+1];
2. 팀 번호, 푼 문제 수, 총 걸린 시간을 저장한 클래스
를 만들어 주었다.
static class Team {
int no;
int solve;
int time;
Team(int no, int solve, int time) {
this.no = no;
this.solve = solve;
this.time = time;
}
}
먼저 RE, TLE, WA의 경우에는 팀 번호, 문제 번호 별로 걸린시간을 더해준다.
if(result.equals("WA") || result.equals("RE") || result.equals("TLE"))
t[teamNo][problem] += 20;
AC인 경우에는 푼문제수 + 1, 문제 푸는데 걸린시간 갱신을 해준다.
문제를 두번 푼 경우는 인정되지 않으므로 한번 푼 문제는 더이상 처리하지 않도록 굉장히 큰 수로 배열에 넣어주었다.
if(t[teamNo][problem] >= 50000) continue;
team[teamNo].solve++;
team[teamNo].time += elapsed + t[teamNo][problem];
t[teamNo][problem] = 50000;
마지막으로 랭킹순으로 정렬해주면 된다.
푼 문제수 내림차순 > 걸린 시간 오름차순 > 팀번호 내림차순 순으로 정렬한다.
Arrays.sort(team, new Comparator<Team>() {
public int compare(Team t1, Team t2) {
if(t1.solve > t2.solve) {
return -1;
} else if(t1.solve == t2.solve) {
return t1.time - t2.time;
}
return 1;
}
});
전체소스
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int q = sc.nextInt();
int t[][] = new int[n+1][m+1];
Team team[] = new Team[n+1];
for(int i=0; i<=n; i++)
team[i] = new Team(i, 0, 0);
for(int i=0; i<q; i++) {
int elapsed = sc.nextInt();
int teamNo = sc.nextInt();
int problem = sc.nextInt();
String result = sc.next();
if(result.equals("WA") || result.equals("RE") || result.equals("TLE"))
t[teamNo][problem] += 20;
else {
if(t[teamNo][problem] >= 50000) continue;
team[teamNo].solve++;
team[teamNo].time += elapsed + t[teamNo][problem];
t[teamNo][problem] = 50000;
}
}
Arrays.sort(team, new Comparator<Team>() {
public int compare(Team t1, Team t2) {
if(t1.solve > t2.solve) {
return -1;
} else if(t1.solve == t2.solve) {
return t1.time - t2.time;
}
return 1;
}
});
for(int i=0; i<=n; i++) {
if(team[i].no == 0) continue;
System.out.println(team[i].no + " " + team[i].solve + " " + team[i].time);
}
}
static class Team {
int no;
int solve;
int time;
Team(int no, int solve, int time) {
this.no = no;
this.solve = solve;
this.time = time;
}
}
}
반응형
'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글
[백준 14582] 오늘도 졌다 (0) | 2019.07.17 |
---|---|
[백준 11947] 이런 반전이 (0) | 2019.07.17 |
[백준 2420] 사파리 월드 (0) | 2019.07.16 |
[백준 3009] 네 번째 점 (0) | 2019.07.16 |
[백준 7453] 합이 0인 네 정수 (0) | 2019.07.16 |
Comments