[백준 1764번] 듣보잡
[백준 1764번] 듣보잡
str.compareTp(str) 사용
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | package _2월_1주차; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.Collections; import java.util.StringTokenizer; public class 백준_손수경_정답_1764 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringTokenizer st = new StringTokenizer(br.readLine()); int n = Integer.parseInt(st.nextToken()); int m = Integer.parseInt(st.nextToken()); String[] nName = new String[n]; String[] mName = new String[m]; int cnt = 0; ArrayList<String> result = new ArrayList<String> (); for (int i = 0; i < n; i++) { nName[i] = br.readLine(); } for (int i = 0; i < m; i++) { mName[i] = br.readLine(); } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (nName[i].compareTo(mName[j]) == 0) { result.add(nName[i]); cnt++; } } } Collections.sort(result); System.out.println(cnt); for (String i : result) { System.out.println(i); } bw.close(); } } | cs |
시간 초과,,,,망할
HashSet으로 데이터형 바꿈 + .contains 매서드 사용
앞 문제에서도 마찬가지로 비교를 이용한다면 HashSet이 빠르다. 그리고 두 배열을 비교하기 위해서는 자바는 굳이 2중배열을 돌리면서 하나씩 비교하지 않아도 된다. 왜냐하면 .contains 매서드가 있기 때문이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | package _2월_1주차; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.StringTokenizer; public class 백준_손수경_정답_1764 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringTokenizer st = new StringTokenizer(br.readLine()); int n = Integer.parseInt(st.nextToken()); int m = Integer.parseInt(st.nextToken()); HashSet<String> nName = new HashSet(); HashSet<String> mName = new HashSet(); ArrayList<String> result = new ArrayList<String> (); int cnt = 0; for (int i = 0; i < n; i++) { nName.add(br.readLine()); } for (int i = 0; i < m; i++) { mName.add(br.readLine()); } for (String i : nName) { boolean isSame = mName.contains(i); if (isSame == true) { cnt++; result.add(i); } } Collections.sort(result); System.out.println(cnt); for (String i : result) { System.out.println(i); } bw.close(); } } | cs |
배운 점
- 2개 이상의 배열을 비교하려면 .contains를 사용할 것
- 비교를 할 일이 있다면 HashSet을 사용할 것
댓글남기기