뱁새유니버스

[알고리즘6] DAT 자료구조 이해하기

by 뱁새유니버스

IT

DAT 자료구조를 이해하기 위한 코드입니다.

 

package algorithm;

import java.util.Scanner;

public class Main {
    // Scanner를 사용하여 사용자로부터 입력을 받습니다.
    static Scanner sc = new Scanner(System.in);
    // 폭탄의 정보를 담는 배열입니다.
    static int arr[] = {3, 3, 2, 7, 5, 5, 7, 2, 1, 2, 5};
    // dat 배열은 특정 값이 arr에 존재하는지를 빠르게 확인하기 위한 배열입니다.
    static boolean dat[] = new boolean[20]; // [0] ~ [19]

    // 주어진 target 값이 arr 배열 안에 존재하는지 확인하는 함수입니다.
    static boolean isExist(int target) {
        for (int i = 0; i < arr.length; i++) {
            if (target == arr[i]) {
                return true;
            }
        }
        return false;
    }

    // arr 배열 안에서 주어진 target 값의 발생 횟수를 카운트하는 함수입니다.
    static int countOccurrences(int target) {
        int count = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == target) {
                count++;
            }
        }
        return count;
    }

    public static void main(String[] args) {
        // dat 배열을 초기화하는 부분입니다. 
        // arr 배열의 각 요소에 해당하는 dat 배열의 인덱스 값을 true로 설정합니다.
        for (int i = 0; i < arr.length; i++) {
            int key = arr[i];
            dat[key] = true;
        }

        // 사용자로부터 계속 값을 입력받는 무한 루프입니다.
        while (true) {
            int target = sc.nextInt();

            // 입력받은 target 값이 arr 배열 안에 존재하는 경우 'O'와 함께 발생 횟수를 출력합니다.
            if (dat[target]) {
                System.out.println("O");
                System.out.println(target + " occurs " + countOccurrences(target) + " times.");
            }
            // target 값이 arr 배열 안에 존재하지 않는 경우 'X'를 출력합니다.
            else {
                System.out.println("X");
            }
        }
    }
}
반응형

블로그의 정보

가슴이 웅장해지는 모든것

뱁새유니버스

활동하기