🎯 개요

<aside> <img src="/icons/zoom-in_gray.svg" alt="/icons/zoom-in_gray.svg" width="40px" /> 스터디 리더 소개 및 개설하게 된 계기


🗓️ 일정 및 장소


👩‍🏫 진행 방식 및 규칙

1) 진행 방식

바뀐 진행 방식

  1. 주차별 학습 분량을 읽은 후 질문 준비하기

    1. 질문이란 ? 개인적으로 더 파고 싶어서 정리한 내용 혹은 딥 다이브한 내용

    2. 질문은 3개 이상 준비해서 공유할 것

    3. 질문이나 정리의 예시

      1. "왜?"와 "어떻게?"에 초점을 맞추면 좋을 수 있음
      2. 혹은 내가 그 내용을 읽고 꼭 기억하고 싶은 내용을 적어도 됨
      3. 예시

      <aside> <img src="/icons/star-of-life_red.svg" alt="/icons/star-of-life_red.svg" width="40px" /> 예시

      Q2. 불리언 연산에서 XOR이 중요한 이유는 무엇이며, 이를 활용한 대표적인 알고리즘이나 응용 사례에는 어떤 것들이 있을까?

      🔍 답변

      XOR(배타적 논리합, Exclusive OR)은 두 입력이 다를 때 참(True)이 되는 논리 연산이다.

      A   B   XOR
      --------------
      0   0   0
      0   1   1
      1   0   1
      1   1   0
      
      

      🚀 XOR이 중요한 이유

      1. 비트 연산에서 유용 → 두 값을 비교하거나 변환하는 데 효과적
      2. 가산기(Adder) 구현 → 하드웨어에서 덧셈 연산을 XOR로 처리
      3. 암호학 및 해싱 → 데이터 암호화(One-Time Pad), 해시 충돌 방지
      4. 비트 플리핑 → 특정 비트를 반전시킬 때 사용 (예: x ^ 1 → x가 1이면 0, 0이면 1)

      💡 XOR을 활용한 대표적인 알고리즘

      1. 비트 스왑(Bit Swapping)

        a = a ^ b;
        b = a ^ b; // b = (a ^ b) ^ b = a
        a = a ^ b; // a = (a ^ b) ^ a = b
        
        
        • 임시 변수를 사용하지 않고 두 값을 교환하는 방법
      2. 중복된 숫자 찾기 (XOR을 이용한 빠른 방법)

        • 배열에서 한 개의 숫자만 홀수 번 등장하고, 나머지는 짝수 번 등장할 때 XOR을 활용
        arr = [1, 2, 3, 2, 1]
        result = 0
        for num in arr:
            result ^= num
        print(result)  # 3
        
        
        • 같은 숫자 XOR 연산은 0이 되므로, 유일하게 남은 숫자만 결과로 나옴.
      3. One-Time Pad 암호화 (XOR 암호)

        def xor_encrypt_decrypt(message, key):
            return "".join(chr(ord(m) ^ ord(k)) for m, k in zip(message, key))
        
        message = "hello"
        key = "world"
        encrypted = xor_encrypt_decrypt(message, key)
        decrypted = xor_encrypt_decrypt(encrypted, key)
        
        print("Encrypted:", encrypted)
        print("Decrypted:", decrypted)
        
        
        • XOR을 이용한 간단한 암호화 방식. 같은 키로 다시 XOR을 수행하면 원본 메시지 복구 가능. </aside>
  2. 정리한 자료(질문)들 스터디 시작 전 깃허브에 공유

    1. 목요일 오후 9시까지 작성하기
    2. 그 주차 이슈로 댓글로 공유해주세요
  3. 2명 랜덤으로 뽑아서 발표

    1. 대신 기주차에 발표한 사람들은 다음주에 제외
  4. 발표 후 한 사람당 한명씩 돌아가면서 이야기 나누거나, 나누고 싶은 내용 자유롭게 공유