[백준] 2776 : 암기왕 : 해시셋

Ureca.·2024년 11월 6일
post-thumbnail

[백준][암기왕](https://www.acmicpc.net/problem/2776)

자바 알고리즘을 공부하다 보면, HashSet과 HashMap이란 것을 보게 된다.
요새는 그렇게 자주 나오는 유형은 아니라고 하지만, 백준 레벨을 올리는 데에는 이만한 문제가 없는 것 같다. 고난이도의 생각을 크게 요구하지도 않을 뿐더러, 조금의 사고력만을 투자한다면 풀리니깐.

1. HashSet?

  • 'Set'이란 우리가 중학교 때 처음 배우는 집합을 말한다. 이 집합이란 것은 원소를 가질 때 중복은 제외한다는 것이다.
    예전에 우리가 A = {1, 2, 3, 4}; 라고 표현했던 것을 생각하면 된다. 그 때의 집합이 지금에 와서 정의가 바뀌진 않을테니깐.

2. 문제 파악

문제를 보면 사족이 길긴하다.
그래서 우리가 뭘 하면 되는건데?

집합에 숫자를 저장하고, 부른 숫자가 그 집합 내에 있으면 '1'이고, 아니라면 '0'이다.

이게 문제 파악의 전부다.

HashSet을 사용하는 방법은 여러 블로그에서 설명하고 있으니, 여기서 사용할 것만 간단하게 파악하도록 해보자.

add() : 집합에 원소를 저장

contains() : 해당 집합 내에 () 원소를 포함하고 있는지를 확인

딱 이 두 가지만 사용해서 이번 문제를 푼다.

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = null;
        StringBuilder sb = new StringBuilder();
        int T = Integer.parseInt(br.readLine());
        while (T-- > 0) { // 테스트 케이스의 횟수 반복
        HashSet<Integer> hashSet  = new HashSet<>(); // hashSet이라는 이름의 집합을 생성

            long n = Integer.parseInt(br.readLine());
                st = new StringTokenizer(br.readLine(), " ");
            for (int i = 0; i < n; i++) {
                int a = Integer.parseInt(st.nextToken());
                hashSet.add(a); // hashSet이라는 집합에 원소 넣기
            }
            int m = Integer.parseInt(br.readLine());
                st = new StringTokenizer(br.readLine(), " ");
            for (int i = 0; i < m; i++) {
                int a = Integer.parseInt(st.nextToken());
                if (hashSet.contains(a)) { // 집합 내에 'a'라는 원소가 있다면?
                    sb.append("1").append('\n'); // '1'을 표시
                } else{					   // 집합 내에 'a'라는 원소가 없다면?
                    sb.append("0").append('\n'); // '0'을 표시
                }
            }
        }
            System.out.println(sb.toString());
    }
}

위에서 말했던대로 요새 이런 문제가 나오는 추세는 아니지만, 자바 알고리즘 초심자에게 있어, 자신감을 채워주는 용도로는 이만한게 없는 것 같다.

profile
한 편의 주마등이 망작이 될 수는 없잖아.

0개의 댓글