이 문제는 경민이가 사이트 주소와 비밀번호를 빠르게 검색할 수 있도록 해주는 프로그램을 작성하는 것입니다. 이를 위해 HashMap을 사용하여 사이트 주소를 키로, 비밀번호를 값으로 저장한 후, 검색 요청이 들어올 때마다 빠르게 비밀번호를 찾아 출력하면 됩니다.
- 입력 처리: 먼저 저장된 사이트 주소와 비밀번호의 수 과 비밀번호를 찾으려는 사이트 주소의 수 을 입력받습니다.
- HashMap 구성: N개의 사이트 주소와 비밀번호를 HashMap에 저장합니다.
- 비밀번호 검색: M개의 비밀번호를 찾으려는 사이트 주소에 대해 HashMap에서 비밀번호를 검색하여 출력합니다.
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String nm = bf.readLine();
StringTokenizer st = new StringTokenizer(nm);
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
HashMap<String, String> info = new HashMap<String, String>();
String[] a;
for(int i = 0; i < N; i++) {
String text = bf.readLine();
a = text.split(" ");
info.put(a[0], a[1]);
}
for(int i = 0; i < M; i++) {
String site = bf.readLine();
bw.write(info.get(site));
bw.newLine();
}
bw.flush();
bw.close();
}
}
HashMap을 사용하면 각 검색 연산은 평균적으로 O(1)시간이 걸리기 때문에 전체 검색 시간 복잡도는 O(M)입니다. 따라서 전체 시간 복잡도는 O(N+M)입니다.
'알고리즘' 카테고리의 다른 글
[백준/실버 III] 2579번 계단 오르기 (0) | 2024.07.25 |
---|---|
[백준/실버 III] 1003번 피보나치 함수 (0) | 2024.07.18 |
[백준/실버 IV] 11399번 ATM (0) | 2024.07.16 |
[백준/실버 IV] 11047번 동전 0 (0) | 2024.07.16 |