어흥
[백준 22232] 가희와 파일 탐색기 (Java) 본문
728x90
반응형
문제 링크: https://www.acmicpc.net/problem/22232
1. 주의할 점
- 정렬 순서를 정리한다
- OS에서 인식하는 확장자인지 구분할 수 있는 방법을 생각한다
2. 구현
- List에 파일명들을 저장한다
- HashSet에 OS에서 인식하는 확장자명을 삽입한다
- List에 저장된 파일명들을 불러와서 파일명, 확장자명, OS에서 인식여부를 구하고 우선순위큐에 삽입한다
- 우선순위큐의 정렬 기준은 설명에 적힌 그대로 적용한다
- 우선순위큐에서 원소 1개씩 뽑아내며 출력한다
import java.util.*;
import java.lang.*;
import java.io.*;
class Main {
static class Info implements Comparable<Info>{
String front,back;
int inSet;
public Info(String front, String back, int inSet){
this.front=front;
this.back=back;
this.inSet=inSet;
}
@Override
public int compareTo(Info o){
if(this.front.equals(o.front)){
if(this.inSet==o.inSet){
return this.back.compareTo(o.back);
}
return Integer.compare(o.inSet,this.inSet);
}
return this.front.compareTo(o.front);
}
}
public static void main (String[] args) throws java.lang.Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
//초기화
List<String> li = new ArrayList<>();
HashSet<String> set = new HashSet<>();
for(int i=0;i<a;i++){
String str = br.readLine();
li.add(str);
}
for(int i=0;i<b;i++){
String str = br.readLine();
set.add(str);
}
PriorityQueue<Info> pq = new PriorityQueue<>();
for(int i=0;i<a;i++){
st = new StringTokenizer(li.get(i),".");
String front = st.nextToken();
String back = st.nextToken();
int flag = set.contains(back) ? 1 : 0;
pq.offer(new Info(front,back,flag));
}
while(!pq.isEmpty()){
Info ii = pq.poll();
System.out.println(ii.front+"."+ii.back);
}
}
}
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준 17299] 오등큰수 (Java) (0) | 2022.04.07 |
---|---|
[백준 22234] 가희와 은행 (Java) (0) | 2022.03.21 |
[백준 15926] 현욱은 괄호왕이야!! (C++, Java) (0) | 2022.03.21 |
[백준 24513] 좀비 바이러스 (Java) (0) | 2022.02.21 |
[백준 16964] DFS 스페셜 저지 (Java) (0) | 2022.02.16 |
Comments