Algorithm/Backjoon
[ 백준 16165번 JAVA ] 걸그룹 마스터 준석이
youth787
2024. 9. 29. 22:41
https://www.acmicpc.net/problem/16165
Hashmap을 사용한 문제.
hash 관련 메서드들을 암기하자.
기본적으로 put, get, remove가 있다.
// 결과 값이 boolean으로 반환된다.
boolean hasApple = map.containsKey("apple");
boolean hasValue = map.containsValue(1);
// HashMap에 있는 모든 키들을 Set으로 반환.
Set<String> keys = map.keySet();
// HashMap의 모든 키-값 쌍을 Set<Map.Entry<K, V>>로 반환
Set<Map.Entry<String, Integer>> entries = map.entrySet();
// 주어진 키가 존재하면 해당 값을 반환하고, 존재하지 않으면 defaultValue를 반환
Integer value = map.getOrDefault("banana", 0);
list 또한 값 포함 여부를 contains를 사용해 확인할 수 있다.
Solution
package SILVER;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.*;
// 내림차순(사전순)으로 정렬
// Collections.sort(member, Collections.reverseOrder());
public class bj16165 {
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());
HashMap<String, List<String>> group = new HashMap<>();
for(int i=0; i<N; i++){
String input = br.readLine();
int number = Integer.parseInt(br.readLine());
List<String> member = new LinkedList<>();
for(int j=0; j<number;j++) member.add(br.readLine());
Collections.sort(member);
group.put(input,member);
}
out : for(int i=0;i<M; i++){
String word = br.readLine();
int num = Integer.parseInt(br.readLine());
if(num==1){
for(Map.Entry<String,List<String>> entry : group.entrySet()){
String key = entry.getKey();
List<String> value = entry.getValue();
if(value.contains(word)){
System.out.println(key);
continue out;
}
}
}else if(num==0)
for(String mem : group.get(word)) System.out.println(mem);
}
}
}
반응형