OPEN HYPER STEP
← 목록으로 (math)
MATH · 15 / 15
math
CHAPTER 15 / 15
읽기 약 2
FUNCTION

논리 퍼즐로 사고력 훈련


핵심 개념

모듈 1~2 종합 — 논리 퍼즐 5문제를 코드로 풀며 수학적 사고 → 알고리즘 사고 전환.

본문

퍼즐 1 — FizzBuzz 변형

PYTHON📋 코드 (24줄)
# 1~100 출력. 단:
# - 3의 배수면 "Fizz"
# - 5의 배수면 "Buzz"
# - 15의 배수면 "FizzBuzz"
# - 그 외는 숫자

# 술어 논리 표현: ∀n ∈ [1, 100]: print(label(n))
def label(n):
    fizz = (n % 3 == 0)
    buzz = (n % 5 == 0)

    # 진리표 (4행)
    if fizz and buzz:
        return 'FizzBuzz'
    if fizz:
        return 'Fizz'
    if buzz:
        return 'Buzz'
    return str(n)


for i in range(1, 16):
    print(label(i))
# 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz

퍼즐 2 — 거짓말쟁이 추리

PYTHON📋 코드 (36줄)
"""
세 사람 A, B, C 중 한 명만 진실, 나머지는 거짓.
A: "B가 거짓말쟁이다"
B: "C가 거짓말쟁이다"
C: "A와 B가 둘 다 거짓말쟁이다"
누가 진실?
"""

import itertools

# 변수: a, b, c 각자가 진실인지 여부 (T/F)
# 단, 정확히 1명만 T

for a, b, c in itertools.product([True, False], repeat=3):
    # 정확히 1명만 진실
    if sum([a, b, c]) != 1:
        continue

    # A의 발언: "B가 거짓말쟁이" → not b 일 때 A 발언 참
    a_statement = (not b)
    # B의 발언: "C가 거짓말쟁이" → not c
    b_statement = (not c)
    # C의 발언: "A와 B 둘 다 거짓말쟁이" → not a and not b
    c_statement = (not a and not b)

    # 진실인 사람의 발언만 참, 거짓말쟁이는 발언이 거짓
    consistent = (
        (a == a_statement) and
        (b == b_statement) and
        (c == c_statement)
    )

    if consistent:
        truth_teller = 'A' if a else ('B' if b else 'C')
        print(f"진실: {truth_teller}")  # B
        break

퍼즐 3 — 8 Queens (백트래킹 + 술어 논리)

PYTHON📋 코드 (32줄)
# 8x8 체스판에 퀸 8개를 서로 공격받지 않게 배치
# 술어: ∀(i, j) ∈ queens, ∀(k, l) ∈ queens, (i, j) != (k, l):
#       i != k AND j != l AND |i-k| != |j-l|

def solve_n_queens(n):
    solutions = []

    def backtrack(row, cols, diag1, diag2, current):
        if row == n:
            solutions.append(current[:])
            return
        for col in range(n):
            if col in cols or (row + col) in diag1 or (row - col) in diag2:
                continue
            cols.add(col)
            diag1.add(row + col)
            diag2.add(row - col)
            current.append(col)

            backtrack(row + 1, cols, diag1, diag2, current)

            cols.remove(col)
            diag1.remove(row + col)
            diag2.remove(row - col)
            current.pop()

    backtrack(0, set(), set(), set(), [])
    return solutions


solutions = solve_n_queens(8)
print(f"8-Queens 해법 수: {len(solutions)}")  # 92

퍼즐 4 — 비트마스크로 부분집합 합

PYTHON📋 코드 (22줄)
# 배열에서 합이 target인 모든 부분집합
# 비트마스크로 모든 부분집합 표현 (2^n)

def find_subsets_with_sum(arr, target):
    n = len(arr)
    results = []

    # i는 0부터 2^n - 1 — 각 비트가 arr[j] 포함 여부
    for i in range(1 << n):
        subset = []
        for j in range(n):
            if i & (1 << j):  # j번째 비트가 1이면 포함
                subset.append(arr[j])
        if sum(subset) == target:
            results.append(subset)

    return results


arr = [1, 2, 3, 4, 5]
print(find_subsets_with_sum(arr, 5))
# [[1, 4], [2, 3], [5]]

퍼즐 5 — 그레이 코드 생성

PYTHON📋 코드 (31줄)
# 그레이 코드: 인접 항목이 1비트만 차이 나는 시퀀스
# 카르노 맵에서 사용한 순서 (00, 01, 11, 10)
# 일반화: n비트 그레이 코드

def gray_code(n):
    """n비트 그레이 코드 시퀀스"""
    result = []
    for i in range(1 << n):
        # 그레이 코드 = i XOR (i >> 1)
        gray = i ^ (i >> 1)
        result.append(gray)
    return result


for n in [2, 3, 4]:
    codes = gray_code(n)
    print(f"\n{n}비트 그레이 코드:")
    for c in codes:
        print(f"  {bin(c)[2:].zfill(n)}")


# 결과 (3비트):
#   000
#   001
#   011
#   010
#   110
#   111
#   101
#   100
# 인접 항목 1비트 차이 보장

모듈 1~2 자가 진단

📋 코드 (14줄)
[모듈 1] 기초 수학 ── 다음 모두 ✅?
□ 변수와 함수의 수학적 의미 + 코드 매핑
□ 1차/2차 함수 그래프 그리기 + 선형 회귀
□ 비율·백분율로 RPM/CTR/전환율 계산
□ 지수와 로그로 알고리즘 시간복잡도 평가
□ 등차/등비/시그마(Σ)로 반복문 분석

[모듈 2] 논리·불대수 ── 다음 모두 ✅?
□ Boolean 단축 평가 활용
□ 진리표로 복잡한 조건문 분석
□ 드모르간 법칙으로 조건 리팩토링
□ 비트 연산으로 권한·색상·플래그 처리
□ 카르노 맵으로 논리식 최소화
□ ∀ ∃ 정량자를 every/some으로 표현

다음 모듈 (이산수학)

CH.16~25 "이산수학" — 집합·관계·그래프·트리. 자료구조와 알고리즘의 수학적 기반.


AI 프롬프트
🤖 AI에게 잘 물어보는 법 — 모델·전략별 프롬프트
Claude

무료: Sonnet 4.6 / Pro $20/mo: Opus 4.6

내가 풀고 싶은 논리 퍼즐을 줄게.
변수 정의 → 명제 → 진리표 → 코드
4단계로 풀이 과정을 보여줘.
ChatGPT

무료: GPT-5.5 / Plus $20/mo: GPT-5.5 Pro

한국 코딩 테스트에서 자주 출제되는
논리 퍼즐 패턴 10가지와
각각의 풀이 템플릿을 알려줘.
Gemini

무료: 2.5 Flash / Pro $19.99/mo: 3.1 Pro

내 알고리즘 학습 데이터를 분석해서
약한 영역(백트래킹/비트마스크/DP)과
다음 30일 학습 플랜을 만들어줘.
Grok

무료: Grok 4.1 / SuperGrok $30/mo

2026년 시니어 면접에서 논리 퍼즐
출제 비율과 한국 IT 대기업의
실제 평가 기준을 솔직히 알려줘.

⭐ 이것만 기억하세요
논리 퍼즐로 사고력 훈련 이 3가지만 확실히 잡으세요
1.논리 퍼즐을 코드로 푸는 능력 = 수학적 사고 → 알고리즘 사고 전환의 핵심 지표
2.비트마스크로 부분집합 표현·백트래킹·그레이 코드 — 모듈 1~2 모든 개념의 응용
3.다음 모듈(이산수학)에서 집합·관계·그래프 — 자료구조와 알고리즘의 수학적 기반 학습


공유하기
진행도 15 / 15