Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 14656번
- 20953번
- 21964
- 1141번
- 14592번
- 1333번
- 5597번
- 10814번
- 백준
- 14215번
- 10409번
- 14322번
- Java
- 7489번
- 자바
- 14726번
- 티스토리챌린지
- Baekjoon
- 나무 공격
- 프로젝트 기획서
- 25576번
- 24267번
- 1362번
- 14467번
- 오블완
- 25904번
- 21866번
- 2355번
- 25642번
- 1568번
Archives
- Today
- Total
suheang
[백준] | JAVA, 자바 | 14592번 - 2017 아주대학교 프로그래밍 경시대회 (Small) 본문
https://www.acmicpc.net/problem/14592
문제 요약 :
순위는 다음과 같이 결정된다.
- 해결한 문제 점수의 총합이 높은 참가자가 더 높은 순위를 가진다.
- 점수의 총합이 같은 경우, 제출 횟수가 적은 참가자가 더 높은 순위를 가진다.
- 점수의 총합과 제출 횟수가 같은 경우, 마지막으로 점수를 획득한 문제의 업로드 시간이 빠른 참가자가 더 높은 순위를 가진다.
참가자들의 순위를 계산하는 프로그램을 작성 ( 1등을 하는 참가자의 번호를 한 줄에 출력 )
문제 풀이 :
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] s = new int[n];
int[] c = new int[n];
int[] l = new int[n];
int win = -1;
int score = Integer.MIN_VALUE;
for (int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
s[i] = Integer.parseInt(st.nextToken());
c[i] = Integer.parseInt(st.nextToken());
l[i] = Integer.parseInt(st.nextToken());
}
for (int i = 0; i < n; i++) {
if (s[i] > score) {
score = s[i];
win = i;
} else if (s[i] == score) {
if (c[i] < c[win]) {
win = i;
} else if (c[i] == c[win]) {
if (l[i] < l[win]) {
win = i;
}
}
}
}
System.out.println(win + 1);
}
}
1. 참가자의 수 n 입력받기
2. 입력받은 n의 크기를 가지고 있는 배열 s, c, l 생성
3. 1등 한 참가자의 번호를 저장할 변수 win, 점수의 총합을 비교할 변수 score 생성
4. 입력받은 n 만큼 for 문 동작
4 - 1. 참가자의 점수, 제출 횟수, 업로드 시간 입력받기
5. 입력받은 n 만큼 for 문 동작
5 - 1. 만약 s[i]가 score 보다 크다면 score의 값을 s[i]의 값으로 변경하고 win의 값을 i로 변경
5 - 2. 만약 s[i]의 값이 score와 같다면 c[i]와 c[win]의 값을 비교해서 c[i]의 값이 c[win]의 값보다 작다면 win의 값을 i로 변경
5 - 3. 만약 c[i]의 값과 c[win]의 값이 같다면 l[i]와 l[win]의 값을 비교, l[i]의 값이 l[win]보다 작다면 win의 값을 i로 변경
6. 저장된 win의 값에서 +1 한 뒤 출력
https://www.acmicpc.net/problem/14593
14593번 - 2017 아주대학교 프로그래밍 경시대회 (Large) 역시 같은 코드로 해결할 수 있다.
'알고리즘' 카테고리의 다른 글
[백준] | JAVA, 자바 | 12780번 - 원피스 (0) | 2024.06.18 |
---|---|
[백준] | JAVA, 자바 | 14656번 - 조교는 새디스트야!! (0) | 2024.06.17 |
[백준] | JAVA, 자바 | 1333번 - 부재중 전화 (0) | 2024.06.14 |
[백준] | JAVA, 자바 | 14726번 - 신용카드 판별 (0) | 2024.06.14 |
[백준] | JAVA, 자바 | 25904번 - 안녕 클레오파트라 세상에서 제일가는 포테이토칩 (0) | 2024.06.13 |