TIL(Today I Learned)
99클럽 코테 스터디 14일차 TIL + 백준29723 (브실이의 입시전략, java)
zincah
2025. 4. 17. 21:16
반응형
오늘의 학습 키워드
- 정렬
문제 탐색하기
문제
문제 풀이 설계하기
https://coding-babo.tistory.com/195
99클럽 코테 스터디 13일차 TIL + 백준 1181 (단어 정렬, java)
오늘의 학습 키워드정렬문제 탐색하기문제 문제 풀이 설계하기문제를 풀기위해서는 주어진 조건에 따라 문자열을 정렬시켜 줘야합니다. 정렬 조건을 직접 제시하는 것으로 봐서 java의 Collections
coding-babo.tistory.com
위 블로그 글에서 풀이한 문제처럼 Collections 를 활용해서 문제를 풀이하면 됩니다.
오름차순, 내림차순 모두 정렬해서 값을 구해야하기때문에 정렬을 2번 구현해주었습니다.
코드
package backjun;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Boj29723 {
static int openScore;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
HashMap<String, Integer> subject = new HashMap<>();
for(int i=0; i<N; i++){
st = new StringTokenizer(br.readLine());
subject.put(st.nextToken(), Integer.parseInt(st.nextToken()));
}
for(int i=0; i<K; i++){
openScore += subject.remove(br.readLine());
}
List<String> keySet = new ArrayList<>(subject.keySet());
keySet.sort(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return subject.get(o1).compareTo(subject.get(o2));
}
});
List<String> keySetReverse = new ArrayList<>(subject.keySet());
keySetReverse.sort(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return subject.get(o2).compareTo(subject.get(o1));
}
});
int maxScore = openScore;
int minScore = openScore;
int cnt = M-K;
for(String key : keySet){
if(cnt == 0) break;
minScore += subject.get(key);
cnt--;
}
cnt = M-K;
for(String key : keySetReverse){
if(cnt == 0) break;
maxScore += subject.get(key);
cnt--;
}
System.out.println(minScore + " " + maxScore);
}
}
오늘의 회고
컬렉션 프레임워크에 익숙해져가고 있는 것 같습니다.
반응형