728x90
문제
가희는 블로그를 운영하고 있습니다. 가희는 블로그에 글을 쓰기 위해, 메모장에 키워드를 적곤 합니다.
지금까지 메모장에 써진 키워드는 모두 서로 다르며, 총 N개가 존재합니다.
가희는 새로운 글을 작성할 때, 최대 10개의 키워드에 대해서 글을 작성합니다.
이 키워드들 중에 메모장에 있었던 키워드는 가희가 글을 쓴 이후, 메모장에서 지워지게 됩니다.
가희는 블로그에 글을 쓰고 나서, 메모장에 있는 키워드 개수가 몇 개인지 알고 싶습니다. 가희를 도와주세요.
입력
첫 번째 줄에 가희가 메모장에 적은 키워드 개수 N, 가희가 블로그에 쓴 글의 개수 M이 공백으로 구분해서 주어집니다.
2번째 줄부터 N+1번째 줄까지 메모장에 적은 키워드 N개가 주어집니다.
N+2번째 줄부터 N+M+1번째 줄까지, 가희가 쓴 글과 관련된 키워드가 , (쉼표)로 구분해서 주어집니다. 공백으로 구분되지 않음을 유의해 주세요.
출력
x번째 줄에는 x번째 글을 쓰고 난 후에 메모장에 남아 있는 키워드의 개수를 출력해 주세요.
풀이
Set을 이용하여 사용할 키워드를 저장한다.
후에 글을 작성하면서 Set이 작성한 글의 키워드를 contains하고 있다면 그 키워드를 삭제한다.
각 글을 쓸때마다 Set에서 값을 삭제하기에 남아 있는(사용하지 않은 키워드) 개수를 출력한다.
br.readLine()을 이용해서 작성한 글의 키워드를 입력받을때
StringTokenizer를 이용해 ","를 argument로 주게되면 ,(comma)를 기준으로 문자열을 나눈다.
코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st= new StringTokenizer(br.readLine());
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(st.nextToken()),m=Integer.parseInt(st.nextToken());
HashSet<String> hm = new HashSet<String>();
// Set을 이용하여 키워드 사용 유무를 판단
for(int i=0;i<n;i++)
hm.add(br.readLine());
for(int i=0;i<m;i++) {
st = new StringTokenizer(br.readLine(),","); // 사용한 키워드를 ,로 분리하여 사용했는지 판단
while(st.hasMoreTokens()) { // 모든 키워드를 사용
String key=st.nextToken();
if(hm.contains(key)) // 만약 사용한 키워드가 Set에 있다면 삭제
hm.remove(key);
}
sb.append(hm.size()+"\n"); // 사용하지 않은 키워드의 갯수를 출력
}
System.out.println(sb.toString());
}
}
728x90
728x90
'Algorithm > Baekjoon' 카테고리의 다른 글
Baekjoon 21774 가희와 로그 파일 JAVA (0) | 2022.09.18 |
---|---|
Baekjoon 19638 센티와 마법의 뿅망치 JAVA (0) | 2022.09.18 |
Baekjoon 14405 피카츄 JAVA (0) | 2022.09.16 |
Baekjoon 1417 국회의원 선거 JAVA (1) | 2022.09.16 |
Baekjoon 10813 공 바꾸기 JAVA (0) | 2022.09.15 |
댓글