본문 바로가기
알고리즘/백준

[백준 / 14425 문자열 집합 / JAVA]

by KDW999 2023. 7. 29.

https://www.acmicpc.net/problem/14425

 

14425번: 문자열 집합

첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다.  다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어

www.acmicpc.net

 

문제 설명

간단하게 N줄에 걸쳐 선언한 문자열 S들이 M줄에 걸쳐 선언한 문자열들과 같은지 비교하는 문제

for문을 사용한 방법과 map을 사용한 방법으로 풀이

위가 map, 아래가 for문

 

for문

import java.util.*;
import java.io.*;

public class Main {
    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());
    	 
    	 String[] nArr = new String[N];
    	 String[] mArr = new String[M];
    	 
    	 for(int n=0; n<N; n++) nArr[n] = br.readLine();
    	 for(int m=0; m<M; m++) mArr[m] = br.readLine();
    	 
    	 int cnt = 0;
    	 for(int n=0; n<N; n++) {
    		 for(int m=0; m<M; m++) {
    			 if(nArr[n].equals(mArr[m])) cnt++;
    		 }
    	 }
    	 
    	 System.out.println(cnt);
    }
}

 

Map

import java.util.*;
import java.io.*;

public class Main {
    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());
    	 
    	 // N맵
    	 HashMap<String, Integer> nMap = new HashMap<String, Integer>();
    	 for(int n=0; n<N; n++) nMap.put(br.readLine(), n);
    	 
    	 int cnt = 0;
    	 for(int m=0; m<M; m++) {
    		 String word = br.readLine();
    		 if(nMap.containsKey(word)) cnt++;
    	 }
    	 
    	 System.out.println(cnt);
    }
}

댓글