728x90
반응형
2024.04.29기준 - 실버3
백준, BEAKJOON, BOJ, JAVA, 자바
풀이
이 문제의 시간제한은 2초이기 때문에,
널널하다는 생각을 하게 되어 간단하게 map으로 값을 저장해 문제를 풀었습니다.
Map을 2개를 선언했습니다.
- Map<String, List<String>> : 그룹 이름을 key, 멤버들을 value로 가지고 있는 Map.
- Map<String, String> : 멤버 이름을 key, 그룹 이름을 value로 가지고 있는 Map.
2가지의 map에 값을 저장한 뒤 case 2개로 나뉘어 값을 출력하는 방식으로 사용했는다.
- case 1 : 이름으로 그룹 찾기.
- case 2 : 그룹으로 이름들 찾기.
이 문제는 자바의 입출력 및 자료구조를 활용하여 구현할 수 있는 문제였습니다.
코드
import java.io.*;
import java.util.*;
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));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine());
int g = Integer.parseInt(st.nextToken());
int p = Integer.parseInt(st.nextToken());
String name, pe;
int n;
List<String> l;
// 그룹이름을 key로 가지고 있는 map
Map<String, List<String>> map = new LinkedHashMap<>();
// 이름 기준으로 key를 가지고 있는 map
Map<String, String> kPe = new LinkedHashMap<>();
while (g-- > 0) {
name = br.readLine();
n = Integer.parseInt(br.readLine());
l = new LinkedList<>();
while (n-- > 0) {
pe = br.readLine();
l.add(pe); // map에 값을 넣기 위해 그룹 별 리스트 add
kPe.put(pe, name); // 이름에 value값 그룹 이름을 넣기 위해 map put
}
map.put(name, l);
}
while (p-- > 0) {
name = br.readLine();
n = Integer.parseInt(br.readLine());
switch (n) {
case 1: // 이름으로 그룹 찾기
sb.append(kPe.get(name)).append("\n");
break;
case 0: // 그룹으로 이름들 찾기
l = new LinkedList<>(map.get(name));
Collections.sort(l); // 정렬
for (int i = 0; i < l.size(); i++) {
sb.append(l.get(i)).append("\n");
}
break;
}
}
bw.write(sb.toString());
bw.flush();
bw.close();
br.close();
}
}
728x90
반응형
'코딩테스트 일기 (BAEKJOON)' 카테고리의 다른 글
BAEKJOON / 백준 - JAVA 2847번 게임을 만든 동준이 (2) | 2024.05.01 |
---|---|
BAEKJOON / 백준 - JAVA 2841번 외계인의 기타 연주 (0) | 2024.04.30 |
BAEKJOON / 백준 - JAVA 16953번 A->B (2) | 2024.04.27 |
BAEKJOON / 백준 - JAVA 1418번 K-세준수 (0) | 2024.04.26 |
BAEKJOON / 백준 - JAVA 1543번 문서 검색 (0) | 2024.04.24 |