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
- katalon xpath
- 피보나치함수
- recursion example
- 재귀 예제
- 재귀함수 예제
- 홈택스 해외주식 양도세
- bfs 미로탐색 java
- 한국투자증권 양도세 신고
- 주식 양도세 신고방법
- katalon 비교
- java.sql.SQLSyntaxErrorException
- 피보나치 예제
- 톰캣 실시간 로그
- CSTS 폭포수 모델
- 국세청 해외주식 양도세 신고방식
- katalon 자동화
- 최대공약수 예제
- 피보나치함수 예제
- 해외주식 양도세 신고
- katalon 사용법
- katalon
- js 자동완성
- Katalon Recorder 사용법
- oracle group by
- 한국투자증권 해외주식 양도세
- 해외증권 양도세 한국투자증권
- tomcat log
- git 연동
- javascript 자동완성
- 테스트 자동화
Archives
- Today
- Total
엄지월드
백준 2535 아시아 정보올림피아드 본문
설명
PriorityQueue를 이용해서 높은 점수부터 출력하도록 했다. class를 이용해서 높은 점수를 받은 사람의 나라와 번호를 저장했다.
그리고 2번 이상 메달을 받을 수 없기 때문에 나라별로 중복을 어떻게 처리할까 싶어서 countryMap을 추가로 선언해서 메달을 받을 때마다 value 값을 더해주고, 2번을 받으면 poll만 하고 다시 while 문을 돌도록 처리했다.
코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.Map;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class Main {
// 2535
public static void main(String[] args) throws IOException {
process();
}
private static void process() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
PriorityQueue<People> priorityQueue = new PriorityQueue<>((o1, o2) -> Integer.compare(o2.score, o1.score));
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int country = Integer.parseInt(st.nextToken());
int num = Integer.parseInt(st.nextToken());
int score = Integer.parseInt(st.nextToken());
priorityQueue.add(new People(country, num, score));
}
Map<Integer, Integer> countryMap = new HashMap<>();
int resultCnt = 0;
while(true) {
People people = priorityQueue.poll();
Integer countryCnt = countryMap.getOrDefault(people.country, 0);
if(countryCnt != 2) {
countryMap.put(people.country, countryCnt+1);
bw.write(people.country + " " + people.num + "\n");
resultCnt++;
}
if(resultCnt == 3) {
break;
}
}
bw.flush();
bw.close();
}
static class People {
int country;
int num;
int score;
public People(int country, int num, int score) {
this.country = country;
this.num = num;
this.score = score;
}
}
}
'알고리즘' 카테고리의 다른 글
백준 14912 숫자 빈도수 (2) | 2024.07.23 |
---|---|
백준 14405 피카츄 (2) | 2024.07.22 |
백준 5555 반지 (0) | 2024.07.20 |
백준 2303 숫자 게임 (0) | 2024.07.10 |
백준 2635 수 이어가기 (0) | 2024.07.09 |
Comments