99클럽 코테 스터디 27일차 TIL
💙 JAVA 비기너
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Collections;
import java.util.HashMap;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(br.readLine());
for(int i=0; i<T; i++) {
int N = Integer.parseInt(br.readLine());
PriorityQueue<Integer> bottles = new PriorityQueue<>(Collections.reverseOrder());
HashMap<String, Integer> schools = new HashMap<>();
for(int j=0; j<N; j++) {
StringTokenizer st = new StringTokenizer(br.readLine());
String school = st.nextToken();
int bottle = Integer.parseInt(st.nextToken());
bottles.add(bottle);
schools.put(school, bottle);
}
int maxBottle = bottles.peek();
for(String school : schools.keySet()) {
if(schools.get(school) == maxBottle) {
bw.write(school + "\n");
}
}
}
br.close();
bw.flush();
bw.close();
}
}
보자마자 아 이거 해시다! 어 근데 정렬...? 힙...??
에라이 그냥 다 써버려!!!!
하고 두개를 다 써버린 코드가 완성되었다.
학교명과 술의 양을 갖는 HashMap schools
와 술의 양을 내림차순으로 정렬하는 Heap(PriorityQueue) bottles
에 하나씩 다 넣어주고 bottles.peek()
을 통해 가장 많은 술의 양 maxBottle
을 찾아낸다. 그리고 schools
에서 maxBottle
을 값으로 가지고 있는 키값을 출력한다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Collections;
import java.util.HashMap;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(br.readLine());
for(int i=0; i<T; i++) {
int N = Integer.parseInt(br.readLine());
PriorityQueue<Integer> bottles = new PriorityQueue<>(Collections.reverseOrder());
HashMap<Integer, String> schools = new HashMap<>();
for(int j=0; j<N; j++) {
StringTokenizer st = new StringTokenizer(br.readLine());
String school = st.nextToken();
int bottle = Integer.parseInt(st.nextToken());
bottles.add(bottle);
schools.put(bottle, school);
}
int maxBottle = bottles.peek();
bw.write(schools.get(maxBottle) + "\n");
}
br.close();
bw.flush();
bw.close();
}
}
키를 술의 양으로 값으로 학교명으로 변경해줬다.
시간은 비슷하지만 메모리와 코드 길이에 약간의 차이가 발생했다.