자료구조 - HashMap 어떻게 쓰니?

이재명·2024년 2월 22일
post-thumbnail

HashMap 이란?

HashMap은 자바 컬렉션 프레임워크의 일부로, 키-값 쌍을 저장하는 자료구조 중 하나이다. 이는 특정 키에 대응하는 값을 효율적으로 찾기 위해 사용된다. HashMap은 해시 함수를 사용하여 키와 값을 관리하며, 상수 시간(O(1))에 데이터를 검색할 수 있다.

HashMap의 주요 메서드

  1. put(key, value): 특정 키에 대해 값을 매핑하여 HashMap에 저장한다.

  2. get(key): 주어진 키에 해당하는 값을 반환한다.

  3. remove(key): 주어진 키에 해당하는 키-값 쌍을 삭제한다.

  4. containsKey(key): 특정 키가 HashMap에 존재하는지 여부를 반환한다.

  5. keySet(): HashMap에 있는 모든 키를 반환한다.

HashMap 예시

import java.util.HashMap;
import java.util.Map;

public class HashMapExample {
    public static void main(String[] args) {
        // HashMap 생성
        Map<String, Integer> hashMap = new HashMap<>();

        // 값 추가
        hashMap.put("apple", 10);
        hashMap.put("banana", 5);
        hashMap.put("orange", 8);

        // 값 조회
        System.out.println("Number of apples: " + hashMap.get("apple"));

        // 값 수정
        hashMap.put("apple", 15);
        System.out.println("Updated number of apples: " + hashMap.get("apple"));

        // 값 삭제
        hashMap.remove("banana");
        System.out.println("HashMap after removing banana: " + hashMap);

        // 특정 키의 존재 여부 확인
        System.out.println("Contains key 'banana': " + hashMap.containsKey("banana"));

        // 모든 키 출력
        System.out.println("All keys in the HashMap: " + hashMap.keySet());
    }
}

이 예시에서는 과일과 해당 과일의 갯수를 나타내는 HashMap을 생성하고, 값 추가, 조회, 수정, 삭제, 존재 여부 확인, 모든 키 출력 등의 기본적인 기능을 사용하는 방법을 보여준다.

이러한 유연한 자료구조를 사용하여 많은 상황에서 효율적으로 데이터를 관리할 수 있다.

백준 26008 해시 해킹

문제 이해

주어진 입력에 따라 m의 n 승을 구하는 문제이다. 여기서 n은 첫 번째 줄의 두 번째 값이고, m은 첫 번째 줄의 첫 번째 값이다. 결과는 1000000007로 나눈 나머지를 출력해야 한다.

문제 해결 계획

  1. BufferedReader와 StringTokenizer를 사용하여 입력값을 받아온다.

  2. 입력값에서 n과 m을 추출한다.

  3. 반복문을 통해 m의 n 승을 구한다.

  4. 결과를 1000000007로 나눈 나머지를 출력한다.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws Exception {
        // 입력을 받기 위한 BufferedReader와 StringTokenizer 사용
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        // n과 m을 추출하여 변수에 저장
        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());
        
        // 결과를 저장할 변수 초기화 (1L은 long 타입으로 강제 형변환)
        long answer = 1L;

        // m의 n 승을 구하기 위한 반복문
        for (int i = 0; i < n; i++) {
            // 결과에 m을 곱하고, 1000000007로 나눈 나머지를 다시 결과에 저장
            answer = (answer * m) % 1000000007;
        }

        // 최종 결과 출력
        System.out.println(answer);
    }
}

코드 실행 결과

입력 예시:

3 5

출력 예시:

125

코드 설명

  1. 입력값을 받아오기 위해 BufferedReader와 StringTokenizer를 사용한다.

  2. 반복문을 통해 m의 n 승을 계산한다.

  3. 결과를 1000000007로 나눈 나머지를 출력한다.

추천 게시글
https://velog.io/@zdlwoaud/자료구조-Array-배열

profile
__개발자가 되어야 한다.

0개의 댓글