이력관리

2026년 4월 28일 09:30분

민수기 14장은 불신의 결과를 세대별로 기록합니다. 40년 광야 생활, 20세 이상 세대는 가나안 진입 불허. 나는 사람과 판결을 이력으로 쌓고 조건에 따라 다른 결과를 부여하는 판결 이력기를 만들었습니다.

package com.jesusbornd.numbers;

import java.util.ArrayList;
import java.util.List;

public class Numbers_14_Chapter_Lv2 {

    enum Verdict { ENTER, BANNED, EXCEPTION }

    record Judgment(String name, int age, boolean faithful, Verdict verdict) {}

    static class JudgmentLog {
        private final List<Judgment> log = new ArrayList<>();

        void record(String name, int age, boolean faithful) {
            Verdict v;
            if (faithful)        v = Verdict.EXCEPTION;
            else if (age < 20)   v = Verdict.ENTER;
            else                 v = Verdict.BANNED;

            log.add(new Judgment(name, age, faithful, v));
        }

        void print() {
            System.out.println("=== 판결 이력 ===");
            log.forEach(j -> System.out.printf(
                "%-8s 나이%3d %s → %s%n",
                j.name(), j.age(),
                j.faithful() ? "[충성]" : "[불신]",
                j.verdict()
            ));
        }
    }

    public static void main(String[] args) {
        JudgmentLog judger = new JudgmentLog();
        judger.record("갈렙",    45, true);
        judger.record("여호수아",40, true);
        judger.record("르우벤",  35, false);
        judger.record("아이",    10, false);
        judger.record("이스라엘인", 25, false);
        judger.print();
    }
}

from dataclasses import dataclass
from enum import Enum

class Verdict(Enum):
    ENTER     = "입성 허용"
    BANNED    = "입성 금지"
    EXCEPTION = "예외 (충성)"

@dataclass
class Judgment:
    name: str
    age: int
    faithful: bool
    verdict: Verdict

class JudgmentLog:
    def __init__(self):
        self._log: list[Judgment] = []

    def record(self, name: str, age: int, faithful: bool):
        if faithful:
            verdict = Verdict.EXCEPTION
        elif age < 20:
            verdict = Verdict.ENTER
        else:
            verdict = Verdict.BANNED
        self._log.append(Judgment(name, age, faithful, verdict))

    def print(self):
        print("=== 판결 이력 ===")
        for j in self._log:
            tag = "[충성]" if j.faithful else "[불신]"
            print(f"{j.name:<8} 나이{j.age:3d} {tag}{j.verdict.value}")


if __name__ == "__main__":
    judger = JudgmentLog()
    judger.record("갈렙",      45, True)
    judger.record("여호수아",  40, True)
    judger.record("르우벤",    35, False)
    judger.record("아이",      10, False)
    judger.record("이스라엘인",25, False)
    judger.print()

Comments

Avatar
 2026년 4월 28일 09:16분

결정의 결과가 그대로 기록으로 남는다는 사실이 묵직하게 느껴졌어요.



Search

← 목록으로