코딩테스트/자바 문제풀이

[CLASS 3: 구현] 백준 17219 비밀번호 찾기

승요나라 2024. 10. 21. 02:47

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에 추가