728x90
난이도 : 실버4
풀이일 : 2401136
https://www.acmicpc.net/problem/1764
링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐
풀이코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.HashSet;
import java.util.ArrayList;
import java.util.Collections;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N, M;
int num = 0;
HashSet<String> people = new HashSet<>();
ArrayList<String> result = new ArrayList<>();
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
for (int i = 0; i < N; i++) {
people.add(br.readLine());
}
for (int i = 0; i < M; i++) {
String person = br.readLine();
if (people.contains(person)) {
num ++;
result.add(person);
}
}
Collections.sort(result);
System.out.println(num);
for (int i = 0; i < num; i++) {
System.out.println(result.get(i));
}
}
}
풀이
- 듣도 못한 사람, 보도 못한 사람의 수를 입력 받기
- 듣도 못한 사람의 수 동안 반복하며 주어지는 모든 이름을 hashset에 추가
- 보도 못한 사람의 수 동안 반복하며 주어지는 이름 중 hashset에 들어있는 이름을 탐색
- 탐색 중 hashset에 들어있는 이름을 발견했다면 num 숫자 올리고 ArrayList에 해당 이름 추가
- 정렬 기능을 사용하기 위해 ArrayList를 사용
- ArrayList 정렬 후 num 수만큼 ArrayList 속 이름 출력
배운것
- HashSet은 직접 정렬을 할 수 없음
- hashset.contains() : hastset 안에 괄호안의 요소가 있는지 검사
- Collections.sort(ArrayList) : arraylist 정렬
- arraylist.get(index) : arraylist의 index 요소 찾기
느낀점
- 예전에 파이썬으로 둘다 리스트에 넣고 뽑을 때 틀렸던 문젠데, 왜 시간초과가 났는지 알겠다. 예전에 틀렸던 문제들을 이렇게 풀어봐도 괜찮을 것 같다는 생각이 들었다.
- 자바 자료형에 조금 더 익숙해지고 있는 기분이 들어서, 파이썬으로 알고리즘을 풀 때 왜 그렇게 그래프 문제만 잘 풀리고 다른 것들을 잘 풀지 못했는지 생각해보게 되었다.
- 자료형 같은 기초 부분이 탄탄하게 되어 있어야 결국 적절하게 써먹을 수 있을 텐데, 틈틈이 자주 기초도 봐야지.
'알고리즘 > 🥈 실버' 카테고리의 다른 글
백준 16953 A -> B 자바 풀이 (0) | 2024.01.21 |
---|---|
백준 11725 트리의 부모 찾기 자바 풀이 (0) | 2024.01.18 |
백준 1235 학생 번호 자바 풀이, 반례 (0) | 2024.01.11 |
백준 1652 누울 자리를 찾아라 자바 풀이, 반례 (1) | 2024.01.09 |
백준 1769 3의 배수 자바 풀이 (0) | 2024.01.04 |