AI로 러닝(Learn) 내일을 향해 러닝(Running)

원당컴퓨터학원에서 배우는 AI, 세상을 향해 달리다

학생부종합전형

전자 2개를 묶으면이중결합 아닌가요?루이스 구조와 분자 분류 알고리즘

원당컴1 2026. 6. 16. 12:46
⚗️ 화학 오개념 × 코딩 탐구
전자 2개를 묶으면
이중결합 아닌가요?
루이스 구조와 분자 분류 알고리즘
시험 전날 밤, 한 학생이 던진 질문이 단톡방을 뜨겁게 달궜습니다.
"공유전자쌍 전자 2개를 묶으면 이중결합 아닌가요?"
이 오개념에서 출발해 분자 구조 분류 알고리즘까지 탐구합니다.
🎯 컴퓨터공학 진로 탐구 ⚗️ 화학 + Python 융합 📚 세특 활용 가능
STORY
📱 시험 전날 밤, 단톡방에서 벌어진 일
중간고사 하루 전날 밤이었습니다. 선생님들이 각자 직보(직접 보충수업)를 마치고 지쳐있던 시간, 교사 단톡방에 이런 이야기가 올라왔습니다.
💬 과학 선생님 단톡방 (오전 9시대)
👩‍🏫
A 선생님
어제 갑자기 공유전자쌍에서 전자 2개를 묶으면 이게 이중결합 아니냐고 말한 고1 걱정되네요... 오늘이 시험인데 😰
👨‍🏫
B 선생님
오늘 시험인데 어제 물이 이중결합이래요... 대환장 😅
👩‍🏫
C 선생님
제 학생도요! 어제 물이 이중결합이래서... 😱
👨‍🏫
D 선생님
매번 느끼는 게 화학은 누가 주기율표 잘 외웠냐가 꽤 영향이 크고... 공유결합이 기말고사 범위에 들어가더라구요. 1월부터 이거 틀려오면 안 된다고 얘기했는데 😢
👩‍🏫
E 선생님
매년 이게 나와요. 올해는 너냐?이럽니다 ㅋㅋ 수업마다 이거 틀려오면 접시에 물 받아 코박을거라고 해도 매년 나와요 ㅋㅋ
여러 선생님들이 같은 오개념을 가진 학생들을 경험했다는 게 흥미롭습니다. "공유전자쌍 2개 = 이중결합"이라는 착각은 매년 반복되는 단골 오개념입니다. 이 오개념이 왜 생기는지, 그리고 올바른 개념은 무엇인지 루이스 구조식과 함께 정확하게 정리해 봅니다.
학생의 오개념
"전자 2개 = 이중결합"
공유전자쌍 안에 전자가 2개 있으니까
H₂O의 O-H 결합도 이중결합이라고 착각.
"2개"라는 숫자에 집중한 오류.
올바른 개념
"전자쌍의 수 = 결합 차수"
공유결합의 종류는 공유전자쌍의 수로 결정.
단일결합 = 전자쌍 1개(전자 2개)
이중결합 = 전자쌍 2개(전자 4개)
🔬 루이스 구조로 보는 결합 종류
H₂O (물) O H H 단일결합 × 2 (공유전자쌍 1개씩) O₂ (산소) O O 이중결합 × 1 (공유전자쌍 2개) N₂ (질소) N N 삼중결합 × 1 (공유전자쌍 3개)
공유결합의 종류는 원자 간 공유전자쌍의 수로 결정됩니다.
H₂O의 O-H는 공유전자쌍이 1개 → 단일결합 / 전자가 2개인 것과 혼동 금지!
💡 오개념이 생기는 이유
공유전자쌍 1개 안에는 전자가 2개 들어 있습니다. 학생들은 "전자 2개"라는 숫자를 보고 "2개니까 이중결합"이라고 착각합니다. 하지만 결합의 종류는 전자쌍(pair)의 수로 결정되지, 전자(electron)의 수로 결정되지 않습니다. 단일결합도 전자쌍 1개(전자 2개), 이중결합은 전자쌍 2개(전자 4개)입니다.
결합 종류 공유전자쌍 수 공유전자 수 예시 분자
단일결합 (—) 1쌍 2개 H₂O, HCl, CH₄
이중결합 (=) 2쌍 4개 O₂, CO₂, C₂H₄
삼중결합 (≡) 3쌍 6개 N₂, CO, C₂H₂
⚠️ H₂O는 단일결합 분자입니다! O-H 결합에서 공유전자쌍은 1개(전자 2개)이므로 단일결합입니다. 산소 원자에 비공유전자쌍 2개가 있지만, 이것은 결합에 참여하지 않습니다. "전자 2개 = 이중결합"이라는 공식은 존재하지 않습니다.
CODING LAB 01
🐍 루이스 구조 분석기 구현
분자식을 입력받아 각 결합의 종류(단일/이중/삼중)를 자동으로 분류하는 Python 프로그램을 만들어 봅니다. 이것이 바로 화학 정보학(Cheminformatics)에서 분자 구조를 데이터로 처리하는 출발점입니다.
lewis_structure_analyzer.py
# 루이스 구조 분석기 - 공유결합 종류 분류 # ── 분자 데이터베이스 ───────────────────────────── # (분자명, 결합정보: {결합쌍: 결합차수}, 비공유전자쌍 수) molecules = { "H₂O": { "bonds": {"O-H": 1, "O-H": 1}, # 단일결합 × 2 "bond_pairs": [("O","H",1), ("O","H",1)], "lone_pairs": 2, "formula": "H-O-H" }, "O₂": { "bond_pairs": [("O","O",2)], # 이중결합 × 1 "lone_pairs": 4, "formula": "O=O" }, "N₂": { "bond_pairs": [("N","N",3)], # 삼중결합 × 1 "lone_pairs": 2, "formula": "N≡N" }, "CO₂": { "bond_pairs": [("C","O",2), ("C","O",2)], # 이중결합 × 2 "lone_pairs": 4, "formula": "O=C=O" }, "HCl": { "bond_pairs": [("H","Cl",1)], # 단일결합 × 1 "lone_pairs": 3, "formula": "H-Cl" }, } BOND_NAME = {1: "단일결합 (—)", 2: "이중결합 (=)", 3: "삼중결합 (≡)"} def analyze_molecule(name, data): """분자 구조 분석 및 오개념 검증""" print(f"{'='*40}") print(f"분자: {name} 루이스구조: {data['formula']}") print(f"{'='*40}") for atom1, atom2, order in data["bond_pairs"]: e_shared = order * 2 # 공유전자 수 = 공유전자쌍 × 2 print(f" {atom1}-{atom2}: 공유전자쌍 {order}개 " f"(공유전자 {e_shared}개) → {BOND_NAME[order]}") # 오개념 체크: "전자 2개 = 이중결합?" 검증 if e_shared == 2 and order == 1: print(f" ⚠️ 오개념 주의: 전자 2개지만 단일결합!") print(f" 결합 종류는 공유전자쌍 수로 결정됩니다.") print(f" 비공유전자쌍: {data['lone_pairs']}쌍 (결합에 미참여)") print() # 전체 분자 분석 실행 for name, data in molecules.items(): analyze_molecule(name, data)
# 실행 결과 (Output)
========================================
분자: H₂O   루이스구조: H-O-H
========================================
  O-H: 공유전자쌍 1개 (공유전자 2개) → 단일결합 (—)
    ⚠️ 오개념 주의: 전자 2개지만 단일결합!
       결합 종류는 공유전자쌍 수로 결정됩니다.
  비공유전자쌍: 2쌍 (결합에 미참여)

분자: O₂   루이스구조: O=O
  O-O: 공유전자쌍 2개 (공유전자 4개) → 이중결합 (=)
  비공유전자쌍: 4쌍 (결합에 미참여)

분자: N₂   루이스구조: N≡N
  N-N: 공유전자쌍 3개 (공유전자 6개) → 삼중결합 (≡)
  비공유전자쌍: 2쌍 (결합에 미참여)

분자: CO₂  루이스구조: O=C=O
  C-O: 공유전자쌍 2개 (공유전자 4개) → 이중결합 (=) × 2
  비공유전자쌍: 4쌍 (결합에 미참여)
코드 실행 결과를 보면 명확합니다. H₂O의 O-H 결합에서 공유전자는 2개지만 공유전자쌍은 1개이므로 단일결합입니다. 프로그램이 자동으로 오개념 경고를 출력하는 것처럼, 실제 화학 소프트웨어도 이 원리로 분자 구조를 분류합니다.
CODING LAB 02
📊 옥텟 규칙 검증기 구현
루이스 구조가 올바른지 확인하려면 옥텟 규칙(전자 8개 채우기)이 성립하는지 검증해야 합니다. 이 규칙을 Python 코드로 구현하면 분자 구조의 유효성을 자동으로 검사할 수 있습니다. 이것이 바로 화학 소프트웨어(RDKit 등)의 핵심 원리입니다.
octet_rule_validator.py
# 옥텟 규칙 검증기 # 공유결합 차수와 비공유전자쌍으로 각 원자의 전자 수 계산 # ── 원소별 원자가 전자 수 ───────────────────────── VALENCE = { "H": 1, # 수소: 듀엣 규칙 (2개) "C": 4, # 탄소 "N": 5, # 질소 "O": 6, # 산소 "F": 7, # 플루오린 "Cl": 7, # 염소 } OCTET_RULE = 8 # 옥텟: 전자 8개 DUET_RULE = 2 # 듀엣: 수소는 전자 2개 def check_octet(atom, bond_order_sum, lone_pairs): """원자의 옥텟 규칙 충족 여부 확인""" shared_e = bond_order_sum * 2 # 공유전자 수 lone_e = lone_pairs * 2 # 비공유전자 수 total_e = shared_e + lone_e # 원자 주변 총 전자 수 target = DUET_RULE if atom == "H" else OCTET_RULE satisfied = (total_e == target) return total_e, target, satisfied # H₂O 구조 검증 print("=== H₂O 옥텟 규칙 검증 ===") print("루이스 구조: H-O-H (단일결합 × 2, O의 비공유전자쌍 × 2)") print() # O 원자 검증 total, target, ok = check_octet("O", bond_order_sum=2, lone_pairs=2) print(f"O 원자: 공유전자 {2*2}개 + 비공유전자 {2*2}개 = {total}개") print(f"옥텟 달성: {'✅' if ok else '❌'} (목표 {target}개)") # H 원자 검증 print() total_h, target_h, ok_h = check_octet("H", bond_order_sum=1, lone_pairs=0) print(f"H 원자: 공유전자 {1*2}개 + 비공유전자 0개 = {total_h}개") print(f"듀엣 달성: {'✅' if ok_h else '❌'} (목표 {target_h}개)") # 오개념 시나리오: "O-H가 이중결합이라면?" print() print("=== ❌ 오개념 시나리오: O-H가 이중결합이면? ===") total_wrong, target_w, ok_w = check_octet("O", bond_order_sum=4, lone_pairs=0) print(f"O 원자(오개념): 공유전자 {4*2}개 = {total_wrong}개") print(f"옥텟 달성: {'✅' if ok_w else '❌'} → 옥텟 초과! 구조 불성립")
# 실행 결과 (Output)
=== H₂O 옥텟 규칙 검증 ===
루이스 구조: H-O-H (단일결합 × 2, O의 비공유전자쌍 × 2)

O 원자: 공유전자 4개 + 비공유전자 4개 = 8개
옥텟 달성: ✅ (목표 8개)

H 원자: 공유전자 2개 + 비공유전자 0개 = 2개
듀엣 달성: ✅ (목표 2개)

=== ❌ 오개념 시나리오: O-H가 이중결합이면? ===
O 원자(오개념): 공유전자 8개 = 8개
옥텟 달성: ❌ → 옥텟 초과! 구조 불성립
옥텟 규칙으로 검증하면 더 명확해집니다. H₂O에서 O-H를 이중결합으로 가정하면 산소 원자 주변 전자가 8개를 초과해 구조 자체가 성립하지 않습니다. 코드가 자동으로 오개념을 검출하는 것처럼, 실제 화학 소프트웨어도 이 원리로 잘못된 분자 구조를 걸러냅니다.
DEEP DIVE
🔬 더 나아간 탐구 아이디어
EXPLORE 01
분자 구조 시각화 프로그램 개발
Python matplotlib 또는 RDKit 라이브러리를 활용해 분자식을 입력하면 루이스 구조식을 자동으로 그려주는 프로그램을 개발합니다. 단일/이중/삼중결합을 선의 수로 시각화하고 비공유전자쌍도 함께 표시합니다.
EXPLORE 02
오개념 자동 탐지 AI 튜터 개발
학생이 화학 문제 풀이를 입력하면 오개념을 자동으로 탐지하고 교정해주는 프로그램을 Python으로 구현합니다. "전자 2개 = 이중결합" 같은 대표적 오개념 패턴을 데이터베이스화해 자동 피드백을 제공하는 교육 AI를 개발합니다.
EXPLORE 03
결합 에너지와 결합 차수 상관관계 분석
단일/이중/삼중결합의 결합 에너지 데이터를 수집하고 결합 차수가 높을수록 결합 에너지가 커지는 관계를 Python으로 시각화합니다. 선형회귀 모델로 결합 차수와 에너지의 수학적 관계를 탐구합니다.
EXPLORE 04
화학 정보학(Cheminformatics) 탐구
실제 화학 소프트웨어(RDKit)가 분자 구조를 데이터로 처리하는 방법을 탐구합니다. SMILES 표기법으로 분자를 문자열로 표현하고 Python으로 분자량, 결합 수, 원소 조성을 자동 계산합니다.
SETECH STORY
📝 세특 스토리라인 제안
🎯 화학 + 정보 세특 연결 흐름
  • "공유전자쌍 전자 2개 = 이중결합"이라는 오개념을 수업 중 발견하고 탐구 시작
  • 공유전자쌍의 수(결합차수)와 공유전자 수의 차이를 루이스 구조로 명확히 정리
  • Python으로 루이스 구조 분석기를 구현해 결합 종류를 자동 분류
  • 옥텟 규칙 검증기로 오개념 시나리오를 코드로 반증
  • 화학 정보학(Cheminformatics) 분야와 연결해 컴공 진로 탐구로 확장
  • "과학적 오개념을 알고리즘으로 자동 탐지하는 교육 AI 개발 가능성을 발견함"
시험 전날 밤 한 학생의 엉뚱한 질문이
루이스 구조 → 옥텟 규칙 → 분자 분류 알고리즘 → 화학 정보학으로 이어지는
오개념 발견 → 개념 정립 → 코드 구현 → 실제 소프트웨어 연결의 스토리가 완성됩니다.
#공유결합 #루이스구조 #이중결합오개념 #옥텟규칙 #Python코딩 #화학정보학 #분자구조분류 #통합과학세특 #세특주제 #학생부종합전형 #컴퓨터공학 #원당컴퓨터학원 #검단신도시 #당하동
사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 통신판매신고번호 : 호 | 사이버몰의 이용약관 바로가기
📌 원당컴퓨터학원 | 인천 서구 당하동 장원프라자 502호
📞 032-565-5497
🌐 홈페이지: www.wondangcom.com
💬 카카오 문의: 카카오톡 상담
원당컴퓨터학원
wondangcom.com
홈페이지 바로가기 →