17219번: 비밀번호 찾기
https://www.acmicpc.net/problem/17219
# 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
HashMap<String, String> map = new HashMap<>();
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine(), " ");
String ad = st.nextToken(); // 사이트 주소
String pw = st.nextToken(); // 비밀번호
map.put(ad, pw);
}
for (int j = 0; j < m; j++) {
String find = br.readLine();
if (map.containsKey(find)) {
sb.append(map.get(find)).append("\n");
}
}
System.out.print(sb);
br.close();
}
}
- HashMap을 사용하여 간단하게 풀 수 있는 문제였다.
- HashMap : 키-값 (Key-Value) 쌍을 저장하는 자료구조로, 데이터를 효율적으로 검색, 삽입, 삭제할 수 있도록 해시 테이블을 기반으로 동작한다.
- 키는 유일해야 하며, 값은 중복 가능하다.
- null 값과 null 키를 허용한다.
- 순서가 유지되지 않는다. 입력된 순서와는 상관없이 데이터가 저장된다.
- 해시 함수를 사용해 키의 해시 코드를 계산하고, 이를 통해 데이터를 빠르게 저장하거나 검색할 수 있다.
- HashMap은 기본적으로 비동기적으로 동작하므로, 멀티스레드 환경에서는 동기화가 필요할 수 있다.
- HashMap은 검색과 삽입이 평균적으로 O(1)의 시간 복잡도를 가지기 때문에, 대량의 데이터를 다룰 때 성능이 우수하다는 장점이 있다.
HashMap 주요 함수
- put(K key, V value) : HashMap에 새로운 키-값 쌍을 추가하거나, 해당 키가 이미 존재하는 경우 값을 업데이트
- get(Object key) : 지정된 키에 해당하는 값을 반환
- remove(Object key) : 주어진 키와 관련된 키-값 쌍을 제거
- containsKey(Object key) : HashMap에 주어진 키가 존재하는지 확인
- containsValue(Object value) : HashMap에 특정 값이 있는지 확인
- size() : HashMap에 저장된 키-값 쌍의 수를 반환
- isEmpty() : HashMap이 비어 있는지 확인
- keySet() : HashMap에 있는 모든 키를 Set으로 반환
- values() : HashMap에 저장된 모든 값을 Collection으로 반환
- clear() : HashMap의 모든 키-값 쌍을 제거
- putAll(Map<? extends K, ? extends V> m) : 주어진 맵의 모든 키-값 쌍을 HashMap에 추가
'코딩테스트 > 자바 문제풀이' 카테고리의 다른 글
[CLASS 3: DP] 백준 1463 1로 만들기 (0) | 2024.10.23 |
---|---|
[CLASS 3: DP] 백준 1003 피보나치 함수 (0) | 2024.10.22 |
[CLASS 3: 구현] 백준 1764 듣보잡 (0) | 2024.10.20 |
[CLASS 3: 구현] 백준 11723 집합 (0) | 2024.10.19 |
[CLASS 2: 자료구조] 백준 11866 요세푸스 문제(0) (0) | 2024.10.18 |