boolean ๋ฐฐ์—ด

์ด์œคํ™”ยท2025๋…„ 10์›” 1์ผ

Java

๋ชฉ๋ก ๋ณด๊ธฐ
6/10
post-thumbnail

๐Ÿ“Œ boolean ๋ฐฐ์—ด์ด๋ž€?

true/false ๊ฐ’๋งŒ ์ €์žฅํ•˜๋Š” ๋ฐฐ์—ด๋กœ, ํŠน์ • ์กฐ๊ฑด์˜ ์ฒดํฌ ์—ฌ๋ถ€๋ฅผ ํ‘œ์‹œํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

boolean[] arr = new boolean[5];
// ๊ธฐ๋ณธ๊ฐ’: [false, false, false, false, false]

๐ŸŽฏ ์–ธ์ œ ์‚ฌ์šฉํ• ๊นŒ?

์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€ ๊ฒฝ์šฐ

  • ์ถœ์„ ์ฒดํฌ (์ถœ์„/๊ฒฐ์„)
  • ๋ฐฉ๋ฌธ ์—ฌ๋ถ€ ์ฒดํฌ (๋ฐฉ๋ฌธํ•จ/์•ˆํ•จ)
  • ์ œ์ถœ ์—ฌ๋ถ€ ์ฒดํฌ (์ œ์ถœ/๋ฏธ์ œ์ถœ)
  • ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธ (์žˆ์Œ/์—†์Œ)
  • ์ค‘๋ณต ํ™•์ธ

๐Ÿ”ง ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

1. ๋ฐฐ์—ด ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”

// ๋ฐฉ๋ฒ• 1: ํฌ๊ธฐ๋งŒ ์ง€์ • (๊ธฐ๋ณธ๊ฐ’ false)
boolean[] arr1 = new boolean[5];
// [false, false, false, false, false]

// ๋ฐฉ๋ฒ• 2: ๊ฐ’๊ณผ ํ•จ๊ป˜ ์ดˆ๊ธฐํ™”
boolean[] arr2 = {true, false, true, false, true};

// ๋ฐฉ๋ฒ• 3: new์™€ ํ•จ๊ป˜ ์ดˆ๊ธฐํ™”
boolean[] arr3 = new boolean[]{true, false, true};

2. ๊ธฐ๋ณธ๊ฐ’์€ false

boolean[] checked = new boolean[3];

System.out.println(checked[0]);  // false
System.out.println(checked[1]);  // false
System.out.println(checked[2]);  // false

์ค‘์š”: int ๋ฐฐ์—ด์€ 0, String ๋ฐฐ์—ด์€ null, boolean ๋ฐฐ์—ด์€ false๊ฐ€ ๊ธฐ๋ณธ๊ฐ’!

3. ๊ฐ’ ์„ค์ •ํ•˜๊ธฐ

boolean[] submitted = new boolean[5];

submitted[0] = true;   // 0๋ฒˆ ์ธ๋ฑ์Šค๋ฅผ true๋กœ
submitted[2] = true;   // 2๋ฒˆ ์ธ๋ฑ์Šค๋ฅผ true๋กœ

// [true, false, true, false, false]

4. ๊ฐ’ ํ™•์ธํ•˜๊ธฐ

if (submitted[0]) {
    System.out.println("์ œ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค");
}

if (!submitted[1]) {
    System.out.println("๋ฏธ์ œ์ถœ์ž…๋‹ˆ๋‹ค");
}

๐Ÿ’ก ์‹ค์ „ ์˜ˆ์ œ

์˜ˆ์ œ 1: ์ถœ์„ ์ฒดํฌ

Scanner sc = new Scanner(System.in);

// 30๋ช…์˜ ํ•™์ƒ (1~30๋ฒˆ)
boolean[] attendance = new boolean[31];  // ์ธ๋ฑ์Šค 1~30 ์‚ฌ์šฉ

// ์ถœ์„ํ•œ ํ•™์ƒ ๋ฒˆํ˜ธ ์ž…๋ ฅ
int n = sc.nextInt();  // ์ถœ์„ํ•œ ํ•™์ƒ ์ˆ˜
for (int i = 0; i < n; i++) {
    int studentNum = sc.nextInt();
    attendance[studentNum] = true;
}

// ๊ฒฐ์„์ž ์ฐพ๊ธฐ
for (int i = 1; i <= 30; i++) {
    if (!attendance[i]) {
        System.out.println(i + "๋ฒˆ ๊ฒฐ์„");
    }
}

์˜ˆ์ œ 2: ์ค‘๋ณต ํ™•์ธ

Scanner sc = new Scanner(System.in);
int[] numbers = {1, 3, 5, 3, 7, 1, 9};

boolean[] seen = new boolean[101];  // 1~100 ๋ฒ”์œ„

System.out.println("์ค‘๋ณต๋œ ์ˆซ์ž:");
for (int num : numbers) {
    if (seen[num]) {
        System.out.println(num);  // ์ด๋ฏธ ๋ณธ ์ˆซ์ž
    } else {
        seen[num] = true;  // ์ฒ˜์Œ ๋ณด๋Š” ์ˆซ์ž ์ฒดํฌ
    }
}

์˜ˆ์ œ 3: ๊ณผ์ œ ๋ฏธ์ œ์ถœ์ž ์ฐพ๊ธฐ

Scanner sc = new Scanner(System.in);

boolean[] submitted = new boolean[31];  // 1~30๋ฒˆ ํ•™์ƒ

// 28๋ช… ์ œ์ถœ์ž ์ž…๋ ฅ
for (int i = 0; i < 28; i++) {
    int num = sc.nextInt();
    submitted[num] = true;
}

// ๋ฏธ์ œ์ถœ์ž ์ถœ๋ ฅ
for (int i = 1; i <= 30; i++) {
    if (!submitted[i]) {
        System.out.println(i);
    }
}

๐Ÿ” int ๋ฐฐ์—ด vs boolean ๋ฐฐ์—ด

int ๋ฐฐ์—ด๋กœ ์ฒดํฌํ•˜๊ธฐ

int[] check = new int[5];

// 0์ด๋ฉด ๋ฏธ์ฒดํฌ, 1์ด๋ฉด ์ฒดํฌ๋กœ ์‚ฌ์šฉ
check[0] = 1;
check[2] = 1;

if (check[0] == 1) {
    System.out.println("์ฒดํฌ๋จ");
}

boolean ๋ฐฐ์—ด๋กœ ์ฒดํฌํ•˜๊ธฐ (๋” ๋ช…ํ™•!)

boolean[] check = new boolean[5];

check[0] = true;
check[2] = true;

if (check[0]) {  // ๋” ์ง๊ด€์ 
    System.out.println("์ฒดํฌ๋จ");
}

๊ฒฐ๋ก : ์ฒดํฌ ์šฉ๋„๋ผ๋ฉด boolean ๋ฐฐ์—ด์ด ๋” ๋ช…ํ™•ํ•˜๊ณ  ์ฝ๊ธฐ ์‰ฌ์›€

โšก ์„ฑ๋Šฅ๊ณผ ๋ฉ”๋ชจ๋ฆฌ

๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰

boolean[] arr1 = new boolean[100];  // ์•ฝ 100๋ฐ”์ดํŠธ
int[] arr2 = new int[100];          // ์•ฝ 400๋ฐ”์ดํŠธ

boolean์€ 1๋ฐ”์ดํŠธ, int๋Š” 4๋ฐ”์ดํŠธ์ด๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ์ ˆ์•ฝ!

์†๋„

// ๋‘ ๋ฐฉ๋ฒ• ๋ชจ๋‘ O(1) ์ ‘๊ทผ ์†๋„
boolean[] visited = new boolean[1000];
visited[500] = true;  // ๋งค์šฐ ๋น ๋ฆ„

๐ŸŽฎ ์‹ค์ „ ํŒจํ„ด

ํŒจํ„ด 1: ๋ฒ”์œ„ ์ฒดํฌ (1~N ์‚ฌ์šฉ)

// 1~30๋ฒˆ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํฌ๊ธฐ 31๋กœ ์ƒ์„ฑ
boolean[] arr = new boolean[31];

for (int i = 1; i <= 30; i++) {
    arr[i] = true;  // 1~30 ์ธ๋ฑ์Šค ์‚ฌ์šฉ
}

์ฃผ์˜: 0๋ฒˆ ์ธ๋ฑ์Šค๋Š” ์‚ฌ์šฉ ์•ˆ ํ•จ (๋‚ญ๋น„์ง€๋งŒ ์ฝ”๋“œ๊ฐ€ ๋” ์ง๊ด€์ )

ํŒจํ„ด 2: 0~N-1 ์‚ฌ์šฉ

// 0~29๋ฒˆ ์‚ฌ์šฉ
boolean[] arr = new boolean[30];

for (int i = 0; i < 30; i++) {
    arr[i] = true;
}

์žฅ์ : ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„ ์—†์Œ
๋‹จ์ : ๋ฒˆํ˜ธ-1 ๊ณ„์‚ฐ ํ•„์š”

ํŒจํ„ด 3: ์ „์ฒด true๋กœ ์ดˆ๊ธฐํ™”

boolean[] arr = new boolean[5];
Arrays.fill(arr, true);

// [true, true, true, true, true]

ํŒจํ„ด 4: false ๊ฐœ์ˆ˜ ์„ธ๊ธฐ

boolean[] arr = {true, false, true, false, false};

int falseCount = 0;
for (boolean b : arr) {
    if (!b) {
        falseCount++;
    }
}

System.out.println("false ๊ฐœ์ˆ˜: " + falseCount);  // 3

โš ๏ธ ์ฃผ์˜์‚ฌํ•ญ

1. ๊ธฐ๋ณธ๊ฐ’์€ false

boolean[] arr = new boolean[3];
// ์ž๋™์œผ๋กœ [false, false, false]
// ๋ณ„๋„ ์ดˆ๊ธฐํ™” ๋ถˆํ•„์š”!

2. ์ธ๋ฑ์Šค ๋ฒ”์œ„ ์ฃผ์˜

boolean[] arr = new boolean[5];  // 0~4๋งŒ ์œ ํšจ

arr[5] = true;  // ArrayIndexOutOfBoundsException!

3. null ์ฒดํฌ ๋ถˆํ•„์š”

boolean[] arr = new boolean[3];

// boolean์€ ๊ธฐ๋ณธ ํƒ€์ž…์ด๋ฏ€๋กœ null ์—†์Œ
if (arr[0]) {  // โœ… ๋ฐ”๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    // ...
}

4. Boolean vs boolean

// ๊ธฐ๋ณธ ํƒ€์ž… (์ถ”์ฒœ)
boolean[] arr1 = new boolean[5];

// ๋ž˜ํผ ํด๋ž˜์Šค (null ํ•„์š”์‹œ)
Boolean[] arr2 = new Boolean[5];  // ๊ธฐ๋ณธ๊ฐ’ null

๐Ÿ“Š ์‹ค์ „ ๋ฌธ์ œ ์œ ํ˜•

์œ ํ˜• 1: ์ถœ์„/์ œ์ถœ ์ฒดํฌ

  • ๋ฐฑ์ค€ 5597๋ฒˆ (๊ณผ์ œ ์•ˆ ๋‚ด์‹  ๋ถ„?)
  • ํŠน์ • ๋ฒˆํ˜ธ ๋ˆ„๋ฝ ์ฐพ๊ธฐ

์œ ํ˜• 2: ๋ฐฉ๋ฌธ ์ฒดํฌ (๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰)

boolean[] visited = new boolean[n];

void dfs(int node) {
    visited[node] = true;
    // ...
}

์œ ํ˜• 3: ์ค‘๋ณต ๊ฒ€์‚ฌ

boolean[] exists = new boolean[101];

for (int num : array) {
    if (exists[num]) {
        System.out.println("์ค‘๋ณต!");
    }
    exists[num] = true;
}

์œ ํ˜• 4: ์†Œ์ˆ˜ ํŒ๋ณ„ (์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด)

boolean[] isPrime = new boolean[101];
Arrays.fill(isPrime, true);

isPrime[0] = isPrime[1] = false;

for (int i = 2; i * i <= 100; i++) {
    if (isPrime[i]) {
        for (int j = i * i; j <= 100; j += i) {
            isPrime[j] = false;
        }
    }
}

๐Ÿ”š ์ •๋ฆฌ

ํ•ต์‹ฌ ํฌ์ธํŠธ

  1. boolean ๋ฐฐ์—ด = true/false ์ฒดํฌ์šฉ ๋ฐฐ์—ด
  2. ๊ธฐ๋ณธ๊ฐ’์€ false
  3. ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์  (1๋ฐ”์ดํŠธ)
  4. ์ฒดํฌ ํ‘œ์‹œ์— ์ตœ์ ํ™”
  5. int ๋ฐฐ์—ด๋ณด๋‹ค ์˜๋ฏธ๊ฐ€ ๋ช…ํ™•

์–ธ์ œ ์‚ฌ์šฉ?

  • ์ถœ์„/์ œ์ถœ ์ฒดํฌ
  • ๋ฐฉ๋ฌธ ์—ฌ๋ถ€ (DFS/BFS)
  • ์ค‘๋ณต ํ™•์ธ
  • ์กด์žฌ ์—ฌ๋ถ€ ํŒ๋ณ„
  • ํŠน์ • ์กฐ๊ฑด ๋งŒ์กฑ ์—ฌ๋ถ€

๊ธฐ๋ณธ ๋ฌธ๋ฒ•

// ์„ ์–ธ
boolean[] arr = new boolean[ํฌ๊ธฐ];

// ์ฒดํฌ
arr[index] = true;

// ํ™•์ธ
if (arr[index]) { }
if (!arr[index]) { }

boolean ๋ฐฐ์—ด์€ "์ฒดํฌ ํ‘œ์‹œ"๊ฐ€ ํ•„์š”ํ•  ๋•Œ ๊ฐ€์žฅ ์ง๊ด€์ ์ด๊ณ  ํšจ์œจ์ ์ธ ๋„๊ตฌ!

0๊ฐœ์˜ ๋Œ“๊ธ€