<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>kumi_183.log</title>
        <link>https://velog.io/</link>
        <description>안녕하세요 ⊂(ᴑ╹.╹ᴑ)੭ 열심히 하구있습니당!!</description>
        <lastBuildDate>Thu, 07 May 2026 01:40:09 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>kumi_183.log</title>
            <url>https://velog.velcdn.com/images/kumi_183/profile/727ebe67-428f-4473-a8ba-c6a6ff6bfc44/social_profile.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. kumi_183.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/kumi_183" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[요구사항 정의서]]></title>
            <link>https://velog.io/@kumi_183/%EC%9A%94%EA%B5%AC%EC%82%AC%ED%95%AD-%EC%A0%95%EC%9D%98%EC%84%9C</link>
            <guid>https://velog.io/@kumi_183/%EC%9A%94%EA%B5%AC%EC%82%AC%ED%95%AD-%EC%A0%95%EC%9D%98%EC%84%9C</guid>
            <pubDate>Thu, 07 May 2026 01:40:09 GMT</pubDate>
            <description><![CDATA[<h2 id="1-요구사항-정의서">1. 요구사항 정의서</h2>
<h3 id="1-1-요구사항-정의서란">1-1. 요구사항 정의서란?</h3>
<p>요구사항 정의서는 쉽게 말해 &quot;우리가 무엇을 만들 것인지&quot;를 명확하게 약속한 계약서 와 같습니다.
<img src="https://velog.velcdn.com/images/kumi_183/post/844eb7b5-60b1-4a22-a8b3-ed2545c5c1a4/image.png" alt=""></p>
<p>고객(사용자)이 원하는 기능과 개발자가 구현해야 할 기술적 내용을 한데 모아 정리한 문서로, 프로젝트의 설계도이자 최종 목적지 역할을 합니다.</p>
<h3 id="1-2-왜-작성해야-하나요">1-2. 왜 작성해야 하나요?</h3>
<ul>
<li><p>개발 기준: &quot;로그인 기능 만들어주세요&quot;라고 했을 때, 누구는 아이디/비번만 생각하고 누구는 카카오톡 연동까지 생각할 수 있습니다. 이를 구체화하여 개발자간의 오해를 없애는 역할을 합니다.</p>
</li>
<li><p>범위 확정: 개발 도중에 &quot;이것도 추가해 주세요&quot;라는 요구가 끝없이 나오는 것을 방지합니다.</p>
</li>
<li><p>검수 기준: 프로젝트가 끝났을 때 &quot;우리가 처음에 약속한 대로 다 만들었나?&quot;를 확인
하는 체크리스트가 됩니다.</p>
</li>
</ul>
<h3 id="1-3-요구사항-정의서의-구성">1-3. 요구사항 정의서의 구성</h3>
<ol>
<li><p>ID: 요구사항 식별 번호 (예: REQ-001)</p>
</li>
<li><p>기능/비기능 구분
• 기능적 요구사항: 시스템이 무엇을 해야 하는지에 대한 요구사항
◦ 예시: &quot;사용자는 이메일로 회원가입을 할 수 있어야 한다.&quot;
• 비기능적 요구사항: 시스템의 품질, 성능, 제약사항에 대한 요구사항
◦ 예시: &quot;페이지 로딩은 2초 이내여야 한다.&quot;, &quot;iOS와 안드로이드 모두 지
원해야 한다.&quot;</p>
</li>
<li><p>카테고리(도메인) 구분: 회원, 결제, 게시판 등의 카테고리</p>
</li>
<li><p>요구사항 명칭: 기능의 이름 (ex. 로그인 기능, 회원가입 기능)</p>
</li>
<li><p>상세 내용: 기능에 대한 구체적인 설명 (누가, 무엇을, 어떻게)</p>
</li>
<li><p>우선순위: 필수(High), 보통(Medium), 선택(Low)</p>
</li>
<li><p>비고: 참고사항이나 제약 조건</p>
</li>
</ol>
<h3 id="1-4-작성시-주의사항">1-4. 작성시 주의사항</h3>
<ol>
<li>모호한 단어 피하기
&#39;적절하게&#39;, &#39;빠르게&#39;, &#39;예쁘게&#39; 같은 단어는 금물입니다.
&#39;3초 이내&#39;, &#39;기존 브랜드 컬러(#FF0000) 사용&#39;처럼 측정 가능한 수치를 쓰세요.</li>
<li>&#39;누가&#39;를 명시하기
단순히 &quot;유저는 ~를 조회할 수 있다&quot;가 아니라 &quot;관리자는 모든 회원의 활동 로그
를 조회할 수 있다&quot;처럼 행위 주체를 명확히 하세요.</li>
<li>예외 상황 고려하기
정상적인 상황뿐만 아니라 &quot;비밀번호를 5번 틀렸을 때&quot; 같은 예외 상황에 대한 요
구사항도 같이 작성합니다.</li>
</ol>
<br>
<hr>

<p>내가 작성한 요구사항 정의서</p>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/3914c760-80b2-4cb0-be8d-8421e710f981/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[팀 개발을 위한 Git & GitHub (3)]]></title>
            <link>https://velog.io/@kumi_183/%ED%8C%80-%EA%B0%9C%EB%B0%9C%EC%9D%84-%EC%9C%84%ED%95%9C-Git-GitHub-3</link>
            <guid>https://velog.io/@kumi_183/%ED%8C%80-%EA%B0%9C%EB%B0%9C%EC%9D%84-%EC%9C%84%ED%95%9C-Git-GitHub-3</guid>
            <pubDate>Wed, 22 Apr 2026 12:18:21 GMT</pubDate>
            <description><![CDATA[<h2 id="visual-studio-code">Visual Studio Code</h2>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/25172cf1-6441-47a2-8d09-94748922046c/image.png" alt=""></p>
<h3 id="vscode에서-github-에-업로드-하는-방법">VSCode에서 Github 에 업로드 하는 방법</h3>
<h4 id="vscode에서-터미널으로-업로드">VSCode에서 터미널으로 업로드</h4>
<ol>
<li><p>github에 새로운 repository 생성하기</p>
</li>
<li><p>VSCode를 켜고, github에 올리고자 하는 파일이 속한 폴더를 열어준다.</p>
</li>
<li><p>git init 
git add .
git commit -m &quot;커밋 내용&quot;
git remote add origin (repository 주소)
git push -u origin main</p>
</li>
</ol>
<p>순서로 vscode 터미널에 입력해주면 된다.
전체 파일이 아닌 단일 또는 몇개의 파일인 경우 add . 의 . 자리에 파일명을 입력해주면 된다.
ex) 파일명이 adc.py, dfg.py 라면 -&gt; git add adc.py dfg.py</p>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/7e962ed7-b05d-4a69-a6fe-40949d1041d6/image.png" alt=""></p>
<p>올라간 것 확인
<img src="https://velog.velcdn.com/images/kumi_183/post/2dfe372a-a6ef-435e-9355-cd1ccbc12e5b/image.png" alt=""></p>
<hr>

<h4 id="vscode에서-버튼으로-업로드">VSCode에서 버튼으로 업로드</h4>
<ol>
<li>왼쪽에 Source Control (Git 아이콘) 클릭</li>
<li>Initialize Repository</li>
<li>눌러서 파일 추가</li>
<li>메시지 쓰고 Commit</li>
<li>Publish to GitHub 버튼 클릭</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[팀 개발을 위한 Git & GitHub _소스트리]]></title>
            <link>https://velog.io/@kumi_183/%ED%8C%80-%EA%B0%9C%EB%B0%9C%EC%9D%84-%EC%9C%84%ED%95%9C-Git-GitHub-2-mivhw904</link>
            <guid>https://velog.io/@kumi_183/%ED%8C%80-%EA%B0%9C%EB%B0%9C%EC%9D%84-%EC%9C%84%ED%95%9C-Git-GitHub-2-mivhw904</guid>
            <pubDate>Wed, 22 Apr 2026 05:50:08 GMT</pubDate>
            <description><![CDATA[<h2 id="소스트리">소스트리</h2>
<p>소스트리: Git 사용을 도와주는 GUI 프로그램
버튼을 클릭하는 방식으로 필요한 명령을 실행할 수 있도록 도와주기 때문에 편리하다.</p>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/44b28877-38e4-4a29-8eae-1ad4c6b9cbfc/image.png" alt=""></p>
<h3 id="소스트리-설치-방법">소스트리 설치 방법</h3>
<p>나는 Windows 환경이므로 Download for Windows 클릭.</p>
<p>소스트리를 사용하려면 비트버킷 서버나 비트버킷 계정이 있어야 한다.
Bitbucket 을 눌러서, 구글 로그인으로 로그인 해준다.</p>
<p>Mercurial 은 해제하고,
Git 계정은 연동,
SSH 키는 불러오지 않는다. (더 안전하게 로그인할 수 있는 열쇠같은 장치인데 당장은 필요 x)</p>
<p>Remote 탭 - 계정 편집 - 호스팅 서비스를 GitHub으로 변경 - OAuth 토큰 새로고침</p>
<p>GitHub 로그인 창이 뜨면 로그인 하고, 소스트리 설정으로 돌아와 확인 버튼을 누른다. 그럼 다음처럼 창이 뜬다. 새로고침하면 나의 레포지토리들을 볼 수 있다.</p>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/8094741d-5f43-458f-8f29-85458f54e6c0/image.png" alt=""></p>
<h2 id="로컬저장소를-소스트리에-불러오기">로컬저장소를 소스트리에 불러오기</h2>
<p>소스트리를 실행하고 상단 탭에서 [Add] 버튼을 클릭 - 탐색 - 폴더 선택 - 추가 </p>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/ba3485dc-1756-4012-8a5e-975dc9ebcdfc/image.png" alt=""></p>
<p>Clone: 원격저장소를 내 컴퓨터에 받아오고(로컬저장소 자동 생성), 소스트리에도 추가 
Add: 내 컴퓨터에서 이미 만든 로컬저장소를 소스트리에 추가
Create: 내 컴퓨터의 폴더에 새로운 로컬저장소 생성하기(git init)</p>
<h3 id="visual-studio-code">Visual Studio Code</h3>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/25172cf1-6441-47a2-8d09-94748922046c/image.png" alt=""></p>
<br>
<hr>

<h3 id="github-둘러보기">GitHub 둘러보기</h3>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/75655ea8-e39f-4987-9652-4030cc408079/image.png" alt=""></p>
<ol>
<li>저장소 이름: 작업할 프로젝트 이름을 입력한다.</li>
<li>저장소 간단 설명: 간단한 설명을 작성한다.</li>
<li>공개/비공개 설정: 이름 곧 내용. 비공개 저장소는 3인 이하 공동작업자 에게만 무료.</li>
<li>README로 첫 내용 설정: 이 옵션 체크시 코드에 대한 설명을 담을 수있는 파일이 생성된다. 보통 저장소에 대한 설명 또는 설치 방법, 저장소에 기여한 사람 등 다양한 내용을 작성할 수 있다.</li>
<li>.gitignore 파일 추가: 작업시 굳이 github에 올릴 필요가 없는 파일들, (텍스트 에디터에서 자동으로 생성된 설정 파일 또는 보안 비밀번호여서 오픈소스로 업로드시 큰일나는 파일 등)을 자동으로 목록에 추가한다. </li>
<li>라이선스 파일 추가: 공개적으로 사용하고, 다른 사용자도 참여하도록 만들어진 오픈소스에도 지적 재산권을 부여할 수 있다. (추후 변경 가능)</li>
</ol>
<h3 id="github-활용법">GitHub 활용법</h3>
<p>개발자의 SNS처럼 사용할 수 있다.</p>
<p>마음에 드는 저장소에 별로 호감을 표시하고, 요즘 떠오르는 오픈 소스 저장소를 Explore 탭에서 훑어볼 수 있다. 내가 좋아하는 서비스를 만든 엔지니어를 팔로우 해서 어떤 다른 개발 활동을 하고 있는지 볼 수도 있다.</p>
<p>새로운 회사에 지원 시 면접관이 나의 GitHub 계정을 보며 내가 회사 일 외에 어떤 개발 활동을 하고 있는지, 어떤 원격저장소에 관심을 가져 별을 누르거나 복사해 왔는지 등을 볼 수 있다.</p>
<p>꾸준히 GitHub를 사용해서 내 코드 관리 및 오픈 소스 활동을 해 왔다면 그 자체로 의미있는 포트폴리오가 된다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[팀 개발을 위한 Git & GitHub _커밋]]></title>
            <link>https://velog.io/@kumi_183/%ED%8C%80-%EA%B0%9C%EB%B0%9C%EC%9D%84-%EC%9C%84%ED%95%9C-Git-GitHub-1</link>
            <guid>https://velog.io/@kumi_183/%ED%8C%80-%EA%B0%9C%EB%B0%9C%EC%9D%84-%EC%9C%84%ED%95%9C-Git-GitHub-1</guid>
            <pubDate>Tue, 21 Apr 2026 19:33:54 GMT</pubDate>
            <description><![CDATA[<p>Git 과 GitHub 을 대강 사용할 줄은 알지만, repository 정리나 git 명령어 등 심화적인 내용을 더 알고자, 도서관에서 책을 하나 빌렸다. 아는 내용은 skip 하고 정리할 부분만 정리해보았다.</p>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/9ab9ca0e-6682-4b58-b5b0-5e789509095e/image.png" alt=""></p>
<hr>

<h3 id="원격저장소의-커밋을-로컬저장소에-내려받기">원격저장소의 커밋을 로컬저장소에 내려받기</h3>
<p>원격저장소의 코드와 버전 전체를 내 컴퓨터로 내려받는 것을 클론 이라고 한다.
클론을 하면 최신 버전뿐만 아니라 이전 버전들과 원격저장소 주소 등이 내 컴퓨터의 로컬저장소에 저장된다.</p>
<ol>
<li>파일을 받을 폴더를 생성한다. (비어있는지 확인)
<img src="https://velog.velcdn.com/images/kumi_183/post/c704b117-5603-480e-b04a-58d13e5fa449/image.png" alt=""></li>
</ol>
<ol start="2">
<li><p>마우스 우클릭 후 Git Bash Here 클릭 -&gt; 까만 화면의 Bash 창이 뜬다
<img src="https://velog.velcdn.com/images/kumi_183/post/39109e5b-6d6d-4b87-85ad-c02c282ac87f/image.png" alt=""></p>
</li>
<li><p>GitHub 들어가서, 내가 다운받고자 하는 원격저장소에 들어간 후 code 버튼 클릭 후 원격저장소 주소를 복사한다. </p>
</li>
</ol>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/89e73771-c8b2-46b4-b33f-0e8d62eeb7c0/image.png" alt=""></p>
<ol start="4">
<li><strong>git clone 복붙링크 (한 칸 띄고) .</strong> 
입력 하면 , 로컬저장소 폴더에 파일들이 생성이 된 것을 확인할 수 있다.</li>
</ol>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/c208adf8-e8c5-493e-8c43-50a3db270067/image.png" alt="">
<img src="https://velog.velcdn.com/images/kumi_183/post/0b66576d-5830-4a51-b795-129e3c7314bb/image.png" alt=""></p>
<p>만약 파일을 수정한다면
Git Bash에서 아래 세 개의 명령어를 실행한다.</p>
<ol>
<li>git add [수정 파일]</li>
<li>git commit -m &quot;추가할 설명&quot;</li>
<li>git push origin master</li>
</ol>
<p>GitHub의 원격저장소에 들어가서 새로고침을 해보면 푸시한 커밋이 올라가 있는 것을 확인할 수 있다. 변경된 파일의 내용도 확인할 수 있다.</p>
<br>

<h3 id="원격저장소의-새로운-커밋을-로컬저장소에-갱신하기">원격저장소의 새로운 커밋을 로컬저장소에 갱신하기</h3>
<p>원격저장소의 커밋은 수정되어있지만, 폴더의 파일은 수정되어있지 않을때, 갱신하는 방법</p>
<p>이때는 Git Bash here 눌러서 검은 창이 나타나면,
git pull origin master 라고 입력하면 된다.
&#39;1 file changed&#39; 라는 메세지가 나오면 성공.</p>
<br>
<hr>

<h3 id="용어정리">용어정리</h3>
<blockquote>
<p>Git: 버전 관리 시스템
GitHub: Git으로 관리하는 프로젝트를 올려둘 수 있는 사이트
GUI: 그래픽 유저 인터페이스, 마우스로 클릭해서 사용하는 방식
CLI: 커맨드 라인 인터페이스, 명령어를 하나씩 입력하는 방식
Git Bash: CLI 방식으로 Git을 사용할 수 있는 환경
commit: 버전 관리를 통해 생성된 파일, 혹은 그 행위
log 명령어: 지금까지 만든 커밋을 모두 확인
checkout: 원하는 지점으로 파일을 되돌림 (like 타임머신)
로컬저장소: Git으로 버전 관리하는 내 컴퓨터 안의 폴더
원격저장소: GitHub에서 협업하는 공간(폴더)
repository: 원격저장소와 같은 의미
push: 로컬저장소의 커밋(버전 관리한 파일)을 원격저장소에 올리는 것
pull: 원격저장소의 커밋을 로컬저장소에 내려받는 것</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[AI Healthcare] Git/GitHub]]></title>
            <link>https://velog.io/@kumi_183/AI-Healthcare-GitGitHub</link>
            <guid>https://velog.io/@kumi_183/AI-Healthcare-GitGitHub</guid>
            <pubDate>Tue, 14 Apr 2026 08:08:38 GMT</pubDate>
            <description><![CDATA[<h2 id="버전-관리version-control">버전 관리(Version Control)</h2>
<ul>
<li>파일이나 코드의 변경 이력을 체계적으로 기록하고 관리하는 것</li>
<li>언제, 누가, 무엇을 바꿨는지 알 수 있고, 필요하면 과거 상태로 되돌릴 수
있음</li>
</ul>
<br>

<p><strong>버전 관리가 필요한 이유</strong></p>
<ul>
<li>변경 이력을 추적하고, 실수를 복구하며, 여러 사람이 충돌 없이 협업하기 위해
버전 관리 활용</li>
<li>기능을 추가했다가 버그가 생겼을 때 이전 정상 동작 버전으로 바로 되돌릴 수 있다</li>
<li>팀원이 동시에 같은 파일을 수정해도 누가 무엇을 바꿨는지 확인하고 충돌을 해결할
수 있다</li>
<li>“최종_진짜최종_v3” 같은 파일을 만들지 않고도 변경 과정을 깔끔하게 관리할 수 있다.</li>
</ul>
<h2 id="git">Git</h2>
<p>코드가 언제, 어떻게, 왜 변경되었는지 기록하고 팀원들과 안전하게 안정적으로 협업할 수 있도록 돕는 도구</p>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/54a45d60-5b3e-47d8-99f1-5194eb8ac608/image.png" alt=""></p>
<ul>
<li>변경 내용이 커밋 단위로 기록됨</li>
<li>언제든 특정 시점으로 되돌릴 수 있음</li>
<li>여러 사람이 동시에 작업 가능</li>
<li>변경 이력과 책임이 명확함</li>
</ul>
<h2 id="github">GitHub</h2>
<p>Git 저장소를 온라인에서 공유하고, 코드 리뷰와 협업 과정을 관리할 수 있도록 해주는 플랫폼</p>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/f51de3d0-0d0a-497e-a1a0-ca77d8d43c24/image.png" alt=""></p>
<ul>
<li>Pull Request, Issue, Review 기능 제공</li>
</ul>
<h3 id="웹-서비스-vs-git과-github">웹 서비스 vs Git과 GitHub</h3>
<p>웹 서비스가</p>
<p>사용자 → 서버 → 데이터베이스 → AI 모델을 연결하는 구조라면,</p>
<p>Git과 GitHub는</p>
<p>개발자 → 코드 → 변경 이력 → 협업 과정을 연결하는 구조이다.</p>
<br>

<hr>

<br>


<h2 id="git--github-기초-학습-목표">Git &amp; GitHub 기초 학습 목표</h2>
<ol>
<li><strong>버전 관리의 개념 이해</strong><ul>
<li>Git이 왜 필요한지 설명할 수 있다.</li>
<li>코드 변경 이력이 어떻게 관리되는지 이해한다.</li>
</ul>
</li>
<li><strong>로컬과 원격 저장소의 차이 이해</strong><ul>
<li>Local Repository와 Remote Repository의 역할을 구분할 수 있다.</li>
<li>push와 pull의 개념을 설명할 수 있다.</li>
</ul>
</li>
<li><strong>브랜치 기반 협업 구조 이해</strong><ul>
<li>브랜치가 왜 필요한지 설명할 수 있다.</li>
<li>기능 단위 개발 흐름을 이해한다.</li>
</ul>
</li>
<li><strong>Pull Request 기반 코드 리뷰 이해</strong><ul>
<li>Pull Request의 역할을 설명할 수 있다.</li>
<li>협업에서 병합 과정이 왜 중요한지 이해한다.</li>
</ul>
</li>
<li><strong>AI 헬스케어 프로젝트 협업 흐름 이해</strong><ul>
<li>모델 코드와 서비스 코드를 분리하여 관리하는 이유를 이해한다.</li>
<li>팀 단위 프로젝트에서 발생할 수 있는 충돌 상황을 이해한다.</li>
</ul>
</li>
</ol>
<hr>

<h2 id="용어-정리">용어 정리</h2>
<h3 id="repository레포지토리">Repository(레포지토리)</h3>
<p>파일과 그 변경 이력을 함께 관리하는 저장소. 프로젝트 전체와 모든 버전 기록이 들어 있음</p>
<ul>
<li><p><strong>로컬 저장소</strong>: 내 컴퓨터에 있는 저장소
프로젝트 폴더로 이동
git init 실행 → 해당 폴더가 Git 레포지토리가 됩니다</p>
</li>
<li><p><strong>원격 저장소</strong>: GitHub 같은 서버에 있는 저장소
GitHub에서 새 Repository 생성
git clone으로 내 컴퓨터에 복사</p>
</li>
</ul>
<h3 id="commit커밋">Commit(커밋)</h3>
<p>변경 사항을 하나의 기록으로 저장하는 단위(= 하나의 버전)</p>
<ul>
<li>“무엇을 왜 바꿨는지”를 메시지로 남김</li>
<li>특정 시점의 프로젝트 상태를 저장</li>
<li>되돌아갈 수 있는 기준점 역할</li>
<li>커밋 생성: git commit -m &quot;회원가입 기능 추가&quot;</li>
</ul>
<h3 id="branch브랜치">Branch(브랜치)</h3>
<p>독립적으로 작업할 수 있는 작업 공간</p>
<ul>
<li>기존 코드를 건드리지 않고 기능 개발 가능</li>
<li>여러 기능을 동시에 개발할 수 있음</li>
<li>작업이 끝나면 병합(merge)함</li>
<li>브랜치 생성: git branch feature/login</li>
<li>브랜치 전환: git switch feature/login</li>
</ul>
<h3 id="head헤드">HEAD(헤드)</h3>
<ul>
<li>현재 내가 작업 중인 위치를 가리키는 포인터</li>
<li>보통 현재 브랜치의 최신 커밋을 가리킴</li>
<li>HEAD가 움직인다는 것은 작업 기준이 바뀐다는 의미</li>
</ul>
<h3 id="working-directory">Working Directory</h3>
<p>실제로 파일을 수정하고 작업하는 공간. 아직 Git에 기록되지 않은 변경 사항이 있는 상태</p>
<h3 id="staging-area">Staging Area</h3>
<p>다음 커밋에 포함할 변경 사항을 미리 모아두는 공간</p>
<hr>


<h2 id="git-명령어-모음">Git 명령어 모음</h2>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/2fcb4ac8-8b22-4613-9635-d1a9a7e3b76c/image.png" alt=""></p>
<p><a href="https://legend-palm-1f1.notion.site/Git-159caf5650aa8066bcb2eafa6741d5a5?pvs=143">https://legend-palm-1f1.notion.site/Git-159caf5650aa8066bcb2eafa6741d5a5?pvs=143</a></p>
<hr>


<h2 id="git-commit--git-branch-conflict">Git Commit / Git Branch Conflict</h2>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/e58c41d2-f796-432b-9e48-bd98135e6943/image.png" alt=""></p>
<p>작업 → add → commit
commit = 저장 + 버전 기록</p>
<pre><code>git add .
git commit -m &quot;메시지&quot;</code></pre><p><img src="https://velog.velcdn.com/images/kumi_183/post/ebbe9429-9eee-4d6c-9cdc-26f14997d69a/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[2일차_ SQL 기초 및 고급문법]]></title>
            <link>https://velog.io/@kumi_183/DBDAY02</link>
            <guid>https://velog.io/@kumi_183/DBDAY02</guid>
            <pubDate>Mon, 26 Jan 2026 16:14:29 GMT</pubDate>
            <description><![CDATA[<p>2</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[1일차_ 헬스케어 데이터와 데이터베이스 개념]]></title>
            <link>https://velog.io/@kumi_183/DBDAY01</link>
            <guid>https://velog.io/@kumi_183/DBDAY01</guid>
            <pubDate>Mon, 26 Jan 2026 16:12:33 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[3일차_데이터전처리]]></title>
            <link>https://velog.io/@kumi_183/Data-Preprocessing</link>
            <guid>https://velog.io/@kumi_183/Data-Preprocessing</guid>
            <pubDate>Tue, 13 Jan 2026 01:28:01 GMT</pubDate>
            <description><![CDATA[<h2 id="데이터-전처리data-preprocessing">데이터 전처리(Data Preprocessing)</h2>
<p>지난 글에서는 데이터를 효과적으로 표현하기 위한 <strong>데이터 시각화(Data Visualization)</strong>에 대해 알아봤다.</p>
<p>데이터를 충분히 분석했다면 이제는 머신러닝 모델이 학습할 수 있도록 데이터를 정리하는 과정이 필요하다. 이 과정을 <strong>데이터 전처리(Data Preprocessing)</strong>라고 한다.</p>
<p>실제 AI 프로젝트에서는 모델을 만드는 시간보다 <strong>데이터 전처리에 더 많은 시간을 투자한다</strong>고 할 정도로 매우 중요한 단계이다.</p>
<hr>
<h2 id="데이터-전처리란">데이터 전처리란?</h2>
<p>데이터 전처리(Data Preprocessing)는</p>
<blockquote>
<p><strong>원본 데이터를 분석과 머신러닝에 적합한 형태로 가공하고 정리하는 과정</strong>이다.</p>
</blockquote>
<p>실제 데이터는 대부분 완벽하지 않다.</p>
<p>예를 들어</p>
<ul>
<li>값이 비어 있는 데이터</li>
<li>잘못 입력된 데이터</li>
<li>서로 다른 형식으로 저장된 데이터</li>
<li>문자열 형태의 데이터</li>
<li>이상치</li>
</ul>
<p>등이 존재한다.</p>
<p>이러한 문제를 해결해야 AI 모델이 데이터를 올바르게 학습할 수 있다.</p>
<hr>
<h2 id="왜-데이터-전처리가-중요할까">왜 데이터 전처리가 중요할까?</h2>
<p>AI 모델은 입력된 데이터를 그대로 학습한다.</p>
<p>만약 데이터 품질이 좋지 않다면 모델 역시 잘못된 결과를 만들어낼 가능성이 높다.</p>
<p>예를 들어</p>
<table>
<thead>
<tr>
<th>나이</th>
<th>혈당</th>
</tr>
</thead>
<tbody><tr>
<td>25</td>
<td>95</td>
</tr>
<tr>
<td>34</td>
<td>102</td>
</tr>
<tr>
<td>41</td>
<td>NULL</td>
</tr>
<tr>
<td>52</td>
<td>118</td>
</tr>
<tr>
<td>300</td>
<td>140</td>
</tr>
</tbody></table>
<p>여기에는 두 가지 문제가 있다.</p>
<ul>
<li>혈당 데이터가 비어 있다.</li>
<li>나이가 300살인 이상치가 존재한다.</li>
</ul>
<p>이러한 데이터를 그대로 학습시키면 모델의 성능이 크게 떨어질 수 있다.</p>
<hr>
<h2 id="데이터-전처리-과정">데이터 전처리 과정</h2>
<p>일반적으로 다음과 같은 순서로 진행한다.</p>
<ol>
<li>결측치 처리</li>
<li>이상치 처리</li>
<li>중복 데이터 제거</li>
<li>범주형 데이터 인코딩</li>
<li>데이터 스케일링</li>
</ol>
<hr>
<h2 id="1-결측치-처리">1. 결측치 처리</h2>
<p>결측치(Missing Value)는 값이 비어 있는 데이터를 의미한다.</p>
<p>먼저 결측치가 얼마나 있는지 확인한다.</p>
<pre><code class="language-python">df.isnull().sum()</code></pre>
<p>결측치를 처리하는 대표적인 방법은 다음과 같다.</p>
<h4 id="삭제하기">삭제하기</h4>
<pre><code class="language-python">df.dropna()</code></pre>
<p>결측치가 포함된 행을 삭제한다.</p>
<hr>
<h4 id="평균값으로-채우기">평균값으로 채우기</h4>
<pre><code class="language-python">df[&quot;Glucose&quot;] = df[&quot;Glucose&quot;].fillna(df[&quot;Glucose&quot;].mean())</code></pre>
<p>숫자형 데이터에서 자주 사용하는 방법이다.</p>
<hr>
<h4 id="중앙값으로-채우기">중앙값으로 채우기</h4>
<pre><code class="language-python">df[&quot;Age&quot;] = df[&quot;Age&quot;].fillna(df[&quot;Age&quot;].median())</code></pre>
<p>이상치가 많은 데이터에서는 평균보다 중앙값을 사용하는 경우가 많다.</p>
<hr>
<h2 id="2-이상치-처리">2. 이상치 처리</h2>
<p>이상치(Outlier)는 다른 데이터와 비교했을 때 지나치게 크거나 작은 값을 의미한다.</p>
<p>예를 들어</p>
<pre><code>25
28
30
31
220</code></pre><p>220은 일반적인 나이 범위를 벗어나므로 이상치일 가능성이 높다.</p>
<p>이상치는</p>
<ul>
<li>삭제</li>
<li>수정</li>
<li>별도로 관리</li>
</ul>
<p>등의 방법으로 처리한다.</p>
<p>대표적으로 박스플롯(Box Plot)을 이용하여 이상치를 확인한다.</p>
<pre><code class="language-python">import seaborn as sns

sns.boxplot(x=df[&quot;Age&quot;])</code></pre>
<hr>
<h2 id="3-중복-데이터-제거">3. 중복 데이터 제거</h2>
<p>동일한 데이터가 여러 번 저장되어 있는 경우도 있다.</p>
<p>중복 데이터는 분석 결과를 왜곡할 수 있기 때문에 제거하는 것이 좋다.</p>
<p>중복 확인</p>
<pre><code class="language-python">df.duplicated().sum()</code></pre>
<p>중복 제거</p>
<pre><code class="language-python">df = df.drop_duplicates()</code></pre>
<hr>
<h2 id="4-범주형-데이터-인코딩">4. 범주형 데이터 인코딩</h2>
<p>머신러닝 모델은 대부분 <strong>숫자 데이터만 이해할 수 있다.</strong></p>
<p>예를 들어</p>
<table>
<thead>
<tr>
<th>성별</th>
</tr>
</thead>
<tbody><tr>
<td>남성</td>
</tr>
<tr>
<td>여성</td>
</tr>
</tbody></table>
<p>이 데이터를 그대로 사용할 수 없기 때문에 숫자로 변환해야 한다.</p>
<hr>
<h3 id="label-encoding">Label Encoding</h3>
<pre><code class="language-python">from sklearn.preprocessing import LabelEncoder

encoder = LabelEncoder()

df[&quot;Gender&quot;] = encoder.fit_transform(df[&quot;Gender&quot;])</code></pre>
<p>결과</p>
<table>
<thead>
<tr>
<th>성별</th>
<th>변환</th>
</tr>
</thead>
<tbody><tr>
<td>남성</td>
<td>0</td>
</tr>
<tr>
<td>여성</td>
<td>1</td>
</tr>
</tbody></table>
<hr>
<h3 id="one-hot-encoding">One-Hot Encoding</h3>
<pre><code class="language-python">pd.get_dummies(df, columns=[&quot;Gender&quot;])</code></pre>
<p>결과</p>
<table>
<thead>
<tr>
<th>Gender_Male</th>
<th>Gender_Female</th>
</tr>
</thead>
<tbody><tr>
<td>1</td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>1</td>
</tr>
</tbody></table>
<p>명목형 데이터에서는 One-Hot Encoding을 많이 사용한다.</p>
<hr>
<h2 id="5-데이터-스케일링">5. 데이터 스케일링</h2>
<p>변수마다 값의 크기가 크게 다르면 머신러닝 모델의 성능에 영향을 줄 수 있다.</p>
<p>예를 들어</p>
<table>
<thead>
<tr>
<th>나이</th>
<th>혈당</th>
</tr>
</thead>
<tbody><tr>
<td>25</td>
<td>95</td>
</tr>
<tr>
<td>60</td>
<td>180</td>
</tr>
</tbody></table>
<p>과</p>
<table>
<thead>
<tr>
<th>연봉</th>
</tr>
</thead>
<tbody><tr>
<td>80,000,000</td>
</tr>
</tbody></table>
<p>처럼 값의 범위가 크게 차이 나는 경우에는 스케일을 맞춰주는 것이 좋다.</p>
<hr>
<h3 id="standardscaler">StandardScaler</h3>
<p>평균을 0, 표준편차를 1로 변환한다.</p>
<pre><code class="language-python">from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()

df_scaled = scaler.fit_transform(df)</code></pre>
<hr>
<h3 id="minmaxscaler">MinMaxScaler</h3>
<p>모든 데이터를 0~1 사이의 값으로 변환한다.</p>
<pre><code class="language-python">from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()

df_scaled = scaler.fit_transform(df)</code></pre>
<hr>
<h2 id="전처리-전과-후-비교">전처리 전과 후 비교</h2>
<table>
<thead>
<tr>
<th>전처리 전</th>
<th>전처리 후</th>
</tr>
</thead>
<tbody><tr>
<td>결측치 존재</td>
<td>결측치 제거 또는 대체</td>
</tr>
<tr>
<td>이상치 존재</td>
<td>이상치 처리</td>
</tr>
<tr>
<td>문자열 데이터</td>
<td>숫자로 변환</td>
</tr>
<tr>
<td>데이터 범위가 제각각</td>
<td>동일한 범위로 스케일링</td>
</tr>
<tr>
<td>중복 데이터 존재</td>
<td>중복 제거</td>
</tr>
</tbody></table>
<p>전처리를 거친 데이터는 머신러닝 모델이 보다 안정적으로 학습할 수 있는 상태가 된다.</p>
<hr>
<h2 id="ai-healthcare에서는-어떻게-활용될까">AI Healthcare에서는 어떻게 활용될까?</h2>
<p>예를 들어 건강검진 데이터를 분석한다고 가정해보자.</p>
<p>전처리 과정에서는 다음과 같은 작업을 수행할 수 있다.</p>
<ul>
<li>누락된 혈당 데이터를 평균값으로 대체</li>
<li>비정상적으로 높은 혈압 값을 확인하고 이상치 처리</li>
<li>중복된 환자 기록 제거</li>
<li>성별, 흡연 여부 등을 숫자로 변환</li>
<li>키, 몸무게, BMI 등의 값을 스케일링</li>
</ul>
<p>이러한 과정을 거친 데이터는 AI 모델이 학습하기 쉬운 형태가 되며, 예측 성능 향상에도 도움이 된다.</p>
<hr>
<h2 id="마무리">마무리</h2>
<p>데이터 전처리는 머신러닝 프로젝트에서 <strong>가장 중요하면서도 가장 많은 시간이 소요되는 과정</strong>이다.</p>
<p>아무리 뛰어난 AI 모델을 사용하더라도 데이터 품질이 좋지 않으면 좋은 결과를 기대하기 어렵다. 반대로 데이터를 꼼꼼하게 전처리하면 비교적 단순한 모델이라도 높은 성능을 얻을 수 있다.</p>
<p>지금까지 <strong>데이터 타입 → Pandas → EDA → 데이터 시각화 → 데이터 전처리</strong>까지 데이터 분석의 기본 과정을 살펴보았다. 이러한 기초를 탄탄히 익혀두면 이후 머신러닝과 딥러닝 학습에서도 데이터를 보다 효과적으로 다룰 수 있게 된다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[3일차_데이터시각화]]></title>
            <link>https://velog.io/@kumi_183/Datavisualization</link>
            <guid>https://velog.io/@kumi_183/Datavisualization</guid>
            <pubDate>Tue, 13 Jan 2026 01:27:24 GMT</pubDate>
            <description><![CDATA[<h2 id="데이터-시각화data-visualization">데이터 시각화(Data Visualization)</h2>
<p>지난 글에서는 EDA(탐색적 데이터 분석)를 통해 데이터의 특성과 패턴을 분석하는 방법을 알아봤다.</p>
<p>하지만 숫자로만 이루어진 데이터를 계속 바라보다 보면 중요한 특징을 놓치기 쉽다. 이럴 때 필요한 것이 바로 <strong>데이터 시각화(Data Visualization)</strong>이다.</p>
<p>데이터를 그래프로 표현하면 복잡한 데이터도 한눈에 이해할 수 있으며, 숨겨진 패턴이나 이상치를 쉽게 발견할 수 있다.</p>
<hr>
<h2 id="데이터-시각화란">데이터 시각화란?</h2>
<p>데이터 시각화(Data Visualization)는</p>
<blockquote>
<p><strong>데이터를 그래프나 차트 등의 시각적인 형태로 표현하여 정보를 쉽게 이해할 수 있도록 만드는 과정</strong>이다.</p>
</blockquote>
<p>사람은 숫자보다 이미지를 훨씬 빠르게 이해하기 때문에 데이터 분석에서는 시각화가 매우 중요한 역할을 한다.</p>
<h2 id="왜-데이터-시각화가-중요할까">왜 데이터 시각화가 중요할까?</h2>
<p>예를 들어 학생들의 시험 점수가 아래와 같다고 가정해보자.</p>
<pre><code>72, 75, 74, 76, 73, 74, 75, 98</code></pre><p>숫자만 보면 특별한 점을 찾기 어렵지만 그래프로 표현하면 <strong>98점이라는 이상치</strong>가 한눈에 보인다.</p>
<p>또한</p>
<ul>
<li>데이터의 분포</li>
<li>증가와 감소 추세</li>
<li>그룹 간 차이</li>
<li>변수 간 관계</li>
</ul>
<p>등도 쉽게 확인할 수 있다.</p>
<hr>
<h2 id="python에서-사용하는-시각화-라이브러리">Python에서 사용하는 시각화 라이브러리</h2>
<p>데이터 분석에서는 주로 다음 두 가지 라이브러리를 사용한다.</p>
<h3 id="matplotlib">Matplotlib</h3>
<p>Python에서 가장 기본이 되는 시각화 라이브러리이다.</p>
<p>거의 모든 그래프를 그릴 수 있으며, 다른 시각화 라이브러리의 기반이 되기도 한다.</p>
<p>설치</p>
<pre><code class="language-bash">pip install matplotlib</code></pre>
<p>불러오기</p>
<pre><code class="language-python">import matplotlib.pyplot as plt</code></pre>
<hr>
<h3 id="seaborn">Seaborn</h3>
<p>Seaborn은 Matplotlib를 기반으로 만들어진 라이브러리이다.</p>
<p>더 보기 좋은 디자인을 제공하며 통계 시각화에 매우 많이 사용된다.</p>
<p>설치</p>
<pre><code class="language-bash">pip install seaborn</code></pre>
<p>불러오기</p>
<pre><code class="language-python">import seaborn as sns</code></pre>
<hr>
<h2 id="1-선-그래프line-plot">1. 선 그래프(Line Plot)</h2>
<p>시간에 따른 변화나 추세를 확인할 때 사용하는 그래프이다.</p>
<pre><code class="language-python">import matplotlib.pyplot as plt

x = [1,2,3,4,5]
y = [3,5,4,7,8]

plt.plot(x, y)
plt.show()</code></pre>
<p>활용 예시</p>
<ul>
<li>하루 혈당 변화</li>
<li>심박수 변화</li>
<li>월별 환자 수</li>
</ul>
<hr>
<h2 id="2-막대그래프bar-chart">2. 막대그래프(Bar Chart)</h2>
<p>범주별 데이터를 비교할 때 사용한다.</p>
<pre><code class="language-python">import matplotlib.pyplot as plt

fruit = [&quot;Apple&quot;,&quot;Banana&quot;,&quot;Orange&quot;]
count = [30,15,20]

plt.bar(fruit, count)
plt.show()</code></pre>
<p>활용 예시</p>
<ul>
<li>성별 환자 수</li>
<li>혈액형 분포</li>
<li>질병 발생 건수</li>
</ul>
<hr>
<h2 id="3-히스토그램histogram">3. 히스토그램(Histogram)</h2>
<p>데이터의 분포를 확인하는 가장 대표적인 그래프이다.</p>
<pre><code class="language-python">df[&quot;Age&quot;].hist()
plt.show()</code></pre>
<p>히스토그램을 통해</p>
<ul>
<li>평균 주변에 데이터가 몰려 있는지</li>
<li>치우친 분포인지</li>
<li>이상치가 존재하는지</li>
</ul>
<p>등을 쉽게 확인할 수 있다.</p>
<hr>
<h2 id="4-산점도scatter-plot">4. 산점도(Scatter Plot)</h2>
<p>두 변수 사이의 관계를 확인할 때 사용한다.</p>
<pre><code class="language-python">plt.scatter(df[&quot;Height&quot;], df[&quot;Weight&quot;])
plt.show()</code></pre>
<p>활용 예시</p>
<ul>
<li>키와 몸무게</li>
<li>BMI와 혈당</li>
<li>나이와 혈압</li>
</ul>
<p>산점도는 상관관계를 직관적으로 확인할 수 있다는 장점이 있다.</p>
<hr>
<h2 id="5-박스플롯box-plot">5. 박스플롯(Box Plot)</h2>
<p>데이터의 분포와 이상치를 확인하는 그래프이다.</p>
<pre><code class="language-python">sns.boxplot(x=df[&quot;Glucose&quot;])
plt.show()</code></pre>
<p>박스플롯에서는</p>
<ul>
<li>중앙값</li>
<li>사분위수</li>
<li>이상치</li>
</ul>
<p>를 한 번에 확인할 수 있다.</p>
<p>EDA 과정에서 가장 많이 사용하는 그래프 중 하나이다.</p>
<hr>
<h2 id="6-히트맵heatmap">6. 히트맵(Heatmap)</h2>
<p>데이터 간의 상관관계를 색으로 표현하는 그래프이다.</p>
<pre><code class="language-python">corr = df.corr(numeric_only=True)

sns.heatmap(corr, annot=True)
plt.show()</code></pre>
<p>색이 진할수록 변수 간의 관계가 강하다는 것을 의미한다.</p>
<p>AI 프로젝트에서는 어떤 변수가 서로 관련이 있는지 확인할 때 자주 사용된다.</p>
<hr>
<h2 id="데이터-시각화를-할-때-주의할-점">데이터 시각화를 할 때 주의할 점</h2>
<p>그래프를 많이 그리는 것보다 <strong>올바르게 표현하는 것</strong>이 중요하다.</p>
<p>다음 사항을 항상 고려하자.</p>
<ul>
<li>그래프 제목을 작성하기</li>
<li>축(Label)을 명확하게 표시하기</li>
<li>적절한 색상 사용하기</li>
<li>한 그래프에 너무 많은 정보를 넣지 않기</li>
<li>목적에 맞는 그래프 선택하기</li>
</ul>
<p>그래프는 보기 좋기 위한 것이 아니라 <strong>정보를 전달하기 위한 도구</strong>라는 점을 기억해야 한다.</p>
<hr>
<h2 id="ai-healthcare에서는-어떻게-활용될까">AI Healthcare에서는 어떻게 활용될까?</h2>
<p>예를 들어 건강검진 데이터를 분석한다고 가정해보자.</p>
<p>데이터 시각화를 통해 다음과 같은 정보를 쉽게 확인할 수 있다.</p>
<ul>
<li>연령대별 혈압 분포</li>
<li>BMI와 혈당의 관계</li>
<li>성별 질병 발생 비율</li>
<li>혈당 이상치 확인</li>
<li>월별 환자 방문 추이</li>
</ul>
<p>이처럼 복잡한 의료 데이터를 그래프로 표현하면 데이터의 특징을 빠르게 이해할 수 있으며, 이상 징후나 중요한 패턴도 쉽게 발견할 수 있다.</p>
<hr>
<h2 id="마무리">마무리</h2>
<p>데이터 시각화는 단순히 그래프를 그리는 기술이 아니라 <strong>데이터를 이해하고 전달하는 과정</strong>이다.</p>
<p>같은 데이터라도 어떤 그래프를 선택하느냐에 따라 전달되는 정보가 달라질 수 있다. 따라서 데이터의 특성과 분석 목적에 맞는 그래프를 선택하는 것이 중요하다.</p>
<p>다음 글에서는 <strong>데이터 전처리(Data Preprocessing)</strong>를 통해 결측치 처리, 이상치 처리, 인코딩, 스케일링 등 머신러닝 모델의 성능을 높이기 위한 데이터 준비 과정을 알아보자.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[2일차_탐색적_데이터분석(EDA)]]></title>
            <link>https://velog.io/@kumi_183/EDA</link>
            <guid>https://velog.io/@kumi_183/EDA</guid>
            <pubDate>Tue, 13 Jan 2026 01:25:59 GMT</pubDate>
            <description><![CDATA[<h2 id="탐색적-데이터-분석eda">탐색적 데이터 분석(EDA)</h2>
<p>EDA는 말 그대로 <strong>데이터를 탐색하는 과정</strong>이다. 데이터를 바로 AI 모델에 학습시키기보다, 먼저 데이터의 특성과 패턴을 이해하고 이상한 점은 없는지 확인하는 것이 목적이다.</p>
<hr>
<h2 id="eda란">EDA란?</h2>
<p>EDA(Exploratory Data Analysis)는</p>
<blockquote>
<p><strong>데이터의 특성과 패턴을 이해하기 위해 다양한 통계적 기법과 시각화를 통해 데이터를 탐색하는 과정</strong>이다.</p>
</blockquote>
<p>데이터를 처음 받았을 때 가장 먼저 수행하는 작업이며, 데이터가 어떤 구조를 가지고 있는지 파악하는 단계라고 생각하면 된다.</p>
<p>EDA를 통해 다음과 같은 질문에 답할 수 있다.</p>
<ul>
<li>데이터는 몇 개가 있을까?</li>
<li>결측치는 얼마나 있을까?</li>
<li>이상치는 존재할까?</li>
<li>평균은 얼마일까?</li>
<li>데이터는 어떤 분포를 가질까?</li>
<li>변수들끼리 어떤 관계가 있을까?</li>
</ul>
<hr>
<h2 id="왜-eda가-중요할까">왜 EDA가 중요할까?</h2>
<p>좋은 AI 모델은 좋은 데이터에서 나온다.</p>
<p>만약 데이터에 문제가 있는데 그대로 모델을 학습시키면 정확도가 크게 떨어질 수 있다.</p>
<p>예를 들어</p>
<ul>
<li>혈압이 음수로 기록되어 있다.</li>
<li>나이가 250살로 입력되어 있다.</li>
<li>혈당 데이터가 절반 이상 비어 있다.</li>
</ul>
<p>이런 데이터를 그대로 사용하면 AI 모델은 잘못된 패턴을 학습하게 된다.</p>
<p>따라서 데이터를 분석하기 전에 반드시 EDA를 수행해야 한다.</p>
<hr>
<h2 id="eda에서-확인하는-것들">EDA에서 확인하는 것들</h2>
<h3 id="1-데이터-크기-확인">1. 데이터 크기 확인</h3>
<p>먼저 데이터가 얼마나 있는지 확인한다.</p>
<pre><code class="language-python">df.shape</code></pre>
<p>출력</p>
<pre><code class="language-python">(1000, 8)</code></pre>
<p>→ 1000개의 행과 8개의 열을 가진 데이터라는 의미이다.</p>
<h3 id="2-데이터-정보-확인">2. 데이터 정보 확인</h3>
<pre><code class="language-python">df.info()</code></pre>
<p>확인할 수 있는 정보</p>
<ul>
<li>데이터 개수</li>
<li>데이터 타입</li>
<li>결측치 개수</li>
</ul>
<p>예시</p>
<pre><code class="language-python">Age         int64
Height      float64
Gender      object</code></pre>
<p>이를 통해 숫자형 데이터와 범주형 데이터를 쉽게 구분할 수 있다.</p>
<h3 id="3-기초-통계량-확인">3. 기초 통계량 확인</h3>
<pre><code class="language-python">df.describe()</code></pre>
<p>대표적으로 다음과 같은 정보를 제공한다.</p>
<ul>
<li>평균(mean)</li>
<li>표준편차(std)</li>
<li>최소값(min)</li>
<li>최대값(max)</li>
<li>중앙값(50%)</li>
<li>사분위수(25%, 75%)</li>
</ul>
<p>예를 들어 혈당 데이터의 평균이 97이고 최대값이 380이라면 이상치가 존재할 가능성을 의심해볼 수 있다.</p>
<hr>
<h2 id="결측치-확인">결측치 확인</h2>
<p>결측치(Missing Value)는 비어있는 데이터를 의미한다.</p>
<pre><code class="language-python">df.isnull().sum()</code></pre>
<p>예시</p>
<pre><code class="language-python">Age          0
Height       5
Weight       2
Glucose     13</code></pre>
<p>결측치가 많다면</p>
<ul>
<li>삭제할지</li>
<li>평균값으로 채울지</li>
<li>중앙값으로 채울지</li>
</ul>
<p>등을 결정해야 한다.</p>
<hr>
<h2 id="이상치-확인">이상치 확인</h2>
<p>이상치(Outlier)는 다른 데이터와 비교했을 때 지나치게 크거나 작은 값을 의미한다.</p>
<p>예를 들어</p>
<table>
<thead>
<tr>
<th>나이</th>
</tr>
</thead>
<tbody><tr>
<td>25</td>
</tr>
<tr>
<td>30</td>
</tr>
<tr>
<td>28</td>
</tr>
<tr>
<td>27</td>
</tr>
<tr>
<td>210</td>
</tr>
</tbody></table>
<p>210세는 일반적으로 존재하기 어려운 값이므로 이상치로 판단할 수 있다.</p>
<p>이상치는 평균을 왜곡하고 모델 성능에도 영향을 줄 수 있기 때문에 반드시 확인해야 한다.</p>
<hr>
<h2 id="데이터-분포-확인">데이터 분포 확인</h2>
<p>데이터가 어떤 형태로 분포하는지도 매우 중요하다.</p>
<p>대표적으로 사용하는 그래프는 <strong>히스토그램(Histogram)</strong>이다.</p>
<pre><code class="language-python">df[&quot;Age&quot;].hist()</code></pre>
<p>히스토그램을 통해</p>
<ul>
<li>데이터가 한쪽으로 치우쳐 있는지</li>
<li>정규분포를 따르는지</li>
<li>특정 구간에 데이터가 몰려 있는지</li>
</ul>
<p>등을 쉽게 확인할 수 있다.</p>
<hr>
<h2 id="변수-간-관계-확인">변수 간 관계 확인</h2>
<p>두 변수 사이의 관계를 확인하는 것도 EDA의 핵심이다.</p>
<p>예를 들어</p>
<ul>
<li>키와 몸무게</li>
<li>나이와 혈압</li>
<li>BMI와 혈당</li>
</ul>
<p>등의 관계를 분석할 수 있다.</p>
<p>대표적으로 사용하는 그래프는 <strong>산점도(Scatter Plot)</strong>이다.</p>
<pre><code class="language-python">df.plot.scatter(x=&quot;Height&quot;, y=&quot;Weight&quot;)</code></pre>
<p>산점도를 보면 두 변수 사이의 상관관계를 직관적으로 확인할 수 있다.</p>
<hr>
<h2 id="상관관계-분석">상관관계 분석</h2>
<p>숫자형 변수끼리는 상관계수(Correlation)를 계산할 수 있다.</p>
<pre><code class="language-python">df.corr(numeric_only=True)</code></pre>
<p>결과 예시</p>
<table>
<thead>
<tr>
<th></th>
<th align="right">Age</th>
<th align="right">BMI</th>
<th align="right">Glucose</th>
</tr>
</thead>
<tbody><tr>
<td>Age</td>
<td align="right">1.00</td>
<td align="right">0.28</td>
<td align="right">0.46</td>
</tr>
<tr>
<td>BMI</td>
<td align="right">0.28</td>
<td align="right">1.00</td>
<td align="right">0.57</td>
</tr>
<tr>
<td>Glucose</td>
<td align="right">0.46</td>
<td align="right">0.57</td>
<td align="right">1.00</td>
</tr>
</tbody></table>
<p>상관계수는 <strong>-1부터 1 사이의 값</strong>을 가지며,</p>
<ul>
<li>1에 가까울수록 강한 양의 상관관계</li>
<li>-1에 가까울수록 강한 음의 상관관계</li>
<li>0에 가까울수록 관계가 거의 없음</li>
</ul>
<p>을 의미한다.</p>
<hr>
<h2 id="데이터-시각화">데이터 시각화</h2>
<p>EDA에서는 숫자로만 데이터를 보는 것보다 그래프로 확인하는 것이 훨씬 쉽다.</p>
<p>대표적으로 사용하는 그래프는 다음과 같다.</p>
<table>
<thead>
<tr>
<th>그래프</th>
<th>용도</th>
</tr>
</thead>
<tbody><tr>
<td>히스토그램</td>
<td>데이터 분포 확인</td>
</tr>
<tr>
<td>막대그래프</td>
<td>범주별 비교</td>
</tr>
<tr>
<td>산점도</td>
<td>변수 간 관계 확인</td>
</tr>
<tr>
<td>박스플롯</td>
<td>이상치 확인</td>
</tr>
<tr>
<td>히트맵</td>
<td>상관관계 확인</td>
</tr>
</tbody></table>
<p>그래프를 활용하면 데이터의 특징을 훨씬 빠르게 이해할 수 있다.</p>
<hr>
<h2 id="ai-healthcare에서는-어떻게-활용될까">AI Healthcare에서는 어떻게 활용될까?</h2>
<p>예를 들어 건강검진 데이터를 분석한다고 가정해보자.</p>
<p>EDA를 수행하면 다음과 같은 사실을 발견할 수 있다.</p>
<ul>
<li>60대 이상에서 평균 혈압이 높다.</li>
<li>BMI가 높을수록 혈당도 높아지는 경향이 있다.</li>
<li>여성보다 남성의 흡연 비율이 높다.</li>
<li>일부 환자의 혈당 데이터가 누락되어 있다.</li>
<li>혈압이 비정상적으로 높은 이상치가 존재한다.</li>
</ul>
<p>이러한 정보를 바탕으로 데이터 전처리 방법을 결정하고, 머신러닝 모델의 성능을 높일 수 있다.</p>
<hr>
<h2 id="마무리">마무리</h2>
<p>EDA는 데이터를 단순히 살펴보는 과정이 아니라, <strong>데이터를 이해하는 과정</strong>이다.</p>
<p>결측치와 이상치를 확인하고, 데이터의 분포와 변수 간 관계를 분석하면서 데이터가 가진 특성을 파악할 수 있다. 이러한 과정을 거쳐야 이후의 전처리와 머신러닝 모델 학습도 더욱 정확하게 진행할 수 있다.</p>
<p>다음 글에서는 <strong>데이터 시각화(Data Visualization)</strong>를 통해 Matplotlib과 Seaborn을 활용해 데이터를 효과적으로 표현하는 방법을 알아보자.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[1일차_Pandas 기초와 실습]]></title>
            <link>https://velog.io/@kumi_183/Pandas01</link>
            <guid>https://velog.io/@kumi_183/Pandas01</guid>
            <pubDate>Thu, 08 Jan 2026 13:02:11 GMT</pubDate>
            <description><![CDATA[<h2 id="pandas-기초와-실습">Pandas 기초와 실습</h2>
<p>데이터 분석을 시작한다면 거의 반드시 사용하게 되는 라이브러리가 바로 Pandas다.
CSV 파일을 불러오고, 데이터를 수정하고, 원하는 정보만 추출하는 등 대부분의 작업을 Pandas로 수행한다.</p>
<h2 id="pandas란">Pandas란?</h2>
<p><strong>Pandas</strong>는 Python에서 데이터를 쉽고 빠르게 다룰 수 있도록 만들어진 라이브러리다.</p>
<p>엑셀처럼 행(Row)과 열(Column) 형태의 데이터를 다룰 수 있으며, 대용량 데이터도 효율적으로 처리할 수 있다.</p>
<p>대표적으로 다음과 같은 작업을 할 수 있다.</p>
<ul>
<li>CSV, Excel 파일 읽기</li>
<li>데이터 조회</li>
<li>데이터 추가 및 삭제</li>
<li>결측치 처리</li>
<li>데이터 정렬</li>
<li>그룹별 통계 분석</li>
<li>데이터 전처리</li>
</ul>
<p>AI와 머신러닝에서는 데이터를 모델에 입력하기 전에 대부분 Pandas를 사용하여 데이터를 정리한다.</p>
<hr>
<h2 id="pandas-설치">Pandas 설치</h2>
<p>설치가 되어 있지 않다면 pip를 이용하여 설치할 수 있다.</p>
<pre><code class="language-bash">pip install pandas</code></pre>
<p>설치 후에는 다음과 같이 불러온다.</p>
<pre><code class="language-python">import pandas as pd</code></pre>
<p>보통 <code>pd</code>라는 별칭(alias)을 사용한다.</p>
<hr>
<h1 id="series와-dataframe">Series와 DataFrame</h1>
<p>Pandas에는 가장 중요한 두 가지 자료구조가 있다.</p>
<h2 id="1-series">1. Series</h2>
<p>Series는 <strong>1차원 데이터</strong>이다.</p>
<p>리스트 하나를 관리한다고 생각하면 이해하기 쉽다.</p>
<pre><code class="language-python">import pandas as pd

score = pd.Series([90, 80, 100, 95])

print(score)</code></pre>
<p>출력</p>
<pre><code>0     90
1     80
2    100
3     95
dtype: int64</code></pre><p>왼쪽 숫자는 <strong>Index</strong>, 오른쪽은 실제 데이터(Value)이다.</p>
<hr>
<h2 id="2-dataframe">2. DataFrame</h2>
<p>DataFrame은 <strong>2차원 테이블 형태의 데이터</strong>이다.</p>
<p>엑셀 시트와 거의 동일한 구조라고 생각하면 된다.</p>
<pre><code class="language-python">import pandas as pd

df = pd.DataFrame({
    &quot;이름&quot;: [&quot;철수&quot;, &quot;영희&quot;, &quot;민수&quot;],
    &quot;나이&quot;: [20, 22, 21],
    &quot;점수&quot;: [90, 85, 95]
})

print(df)</code></pre>
<p>출력</p>
<pre><code>   이름   나이   점수
0 철수   20   90
1 영희   22   85
2 민수   21   95</code></pre><p>실제 데이터 분석에서는 대부분 DataFrame을 사용한다.</p>
<hr>
<h2 id="csv-파일-불러오기">CSV 파일 불러오기</h2>
<p>가장 많이 사용하는 기능이다.</p>
<pre><code class="language-python">df = pd.read_csv(&quot;health.csv&quot;)</code></pre>
<p>파일을 읽은 후에는 데이터를 확인해보자.</p>
<pre><code class="language-python">print(df)</code></pre>
<p>또는</p>
<pre><code class="language-python">df.head()</code></pre>
<p><code>head()</code>는 기본적으로 상위 5개의 데이터를 보여준다.</p>
<p>반대로 마지막 데이터를 보고 싶다면</p>
<pre><code class="language-python">df.tail()</code></pre>
<p>을 사용하면 된다.</p>
<hr>
<h2 id="데이터-정보-확인하기">데이터 정보 확인하기</h2>
<p>데이터를 분석하기 전에 반드시 확인해야 하는 함수들이다.</p>
<h3 id="shape">shape</h3>
<p>데이터 크기를 확인한다.</p>
<pre><code class="language-python">df.shape</code></pre>
<p>예시</p>
<pre><code>(1000, 8)</code></pre><p>→ 행이 1000개, 열이 8개라는 의미이다.</p>
<hr>
<h2 id="columns">columns</h2>
<p>컬럼 이름을 확인한다.</p>
<pre><code class="language-python">df.columns</code></pre>
<h2 id="info">info()</h2>
<p>데이터 타입과 결측치를 확인할 수 있다.</p>
<pre><code class="language-python">df.info()</code></pre>
<p>예시</p>
<pre><code>RangeIndex: 1000 entries

Age       int64
Gender    object
Height    float64</code></pre><p>데이터 분석을 시작하기 전에 가장 많이 사용하는 함수 중 하나다.</p>
<hr>
<h2 id="describe">describe()</h2>
<p>숫자형 데이터의 통계를 확인한다.</p>
<pre><code class="language-python">df.describe()</code></pre>
<p>결과에는 다음과 같은 정보가 포함된다.</p>
<ul>
<li>평균(mean)</li>
<li>표준편차(std)</li>
<li>최소값(min)</li>
<li>최대값(max)</li>
<li>사분위수(25%, 50%, 75%)</li>
</ul>
<hr>
<h2 id="원하는-데이터-선택하기">원하는 데이터 선택하기</h2>
<h3 id="컬럼-하나-선택">컬럼 하나 선택</h3>
<pre><code class="language-python">df[&quot;Age&quot;]</code></pre>
<p>또는</p>
<pre><code class="language-python">df.Age</code></pre>
<hr>
<h3 id="여러-컬럼-선택">여러 컬럼 선택</h3>
<pre><code class="language-python">df[[&quot;Age&quot;, &quot;Height&quot;]]</code></pre>
<hr>
<h3 id="행-선택">행 선택</h3>
<pre><code class="language-python">df.iloc[0]</code></pre>
<p>첫 번째 행을 가져온다.</p>
<pre><code class="language-python">df.iloc[0:5]</code></pre>
<p>첫 번째부터 다섯 번째 행까지 가져온다.</p>
<h2 id="조건에-맞는-데이터-찾기">조건에 맞는 데이터 찾기</h2>
<p>예를 들어 나이가 30세 이상인 사람만 조회하고 싶다면</p>
<pre><code class="language-python">df[df[&quot;Age&quot;] &gt;= 30]</code></pre>
<p>혈당이 120 이상인 사람만 찾는다면</p>
<pre><code class="language-python">df[df[&quot;Glucose&quot;] &gt;= 120]</code></pre>
<p>조건을 여러 개 사용할 수도 있다.</p>
<pre><code class="language-python">df[(df[&quot;Age&quot;] &gt;= 30) &amp; (df[&quot;Gender&quot;] == &quot;Male&quot;)]</code></pre>
<hr>
<h3 id="새로운-컬럼-만들기">새로운 컬럼 만들기</h3>
<p>BMI 컬럼을 만들어보자.</p>
<pre><code class="language-python">df[&quot;BMI&quot;] = df[&quot;Weight&quot;] / (df[&quot;Height&quot;]/100)**2</code></pre>
<p>이처럼 기존 데이터를 이용하여 새로운 컬럼을 쉽게 생성할 수 있다.</p>
<h3 id="정렬하기">정렬하기</h3>
<p>나이순으로 정렬</p>
<pre><code class="language-python">df.sort_values(&quot;Age&quot;)</code></pre>
<p>내림차순 정렬</p>
<pre><code class="language-python">df.sort_values(&quot;Age&quot;, ascending=False)</code></pre>
<h3 id="결측치-확인">결측치 확인</h3>
<p>결측치는 비어있는 데이터를 의미한다.</p>
<pre><code class="language-python">df.isnull().sum()</code></pre>
<p>각 컬럼마다 결측치가 몇 개인지 확인할 수 있다.</p>
<hr>
<h2 id="ai-healthcare에서는-어떻게-사용할까">AI Healthcare에서는 어떻게 사용할까?</h2>
<p>예를 들어 환자 건강검진 데이터가 있다고 가정해보자.</p>
<table>
<thead>
<tr>
<th>이름</th>
<th align="right">나이</th>
<th align="right">혈압</th>
<th align="right">혈당</th>
</tr>
</thead>
<tbody><tr>
<td>김철수</td>
<td align="right">28</td>
<td align="right">120</td>
<td align="right">95</td>
</tr>
<tr>
<td>이영희</td>
<td align="right">45</td>
<td align="right">135</td>
<td align="right">118</td>
</tr>
<tr>
<td>박민수</td>
<td align="right">61</td>
<td align="right">148</td>
<td align="right">132</td>
</tr>
</tbody></table>
<p>Pandas를 이용하면</p>
<ul>
<li>60세 이상 환자만 추출</li>
<li>혈당이 높은 환자 찾기</li>
<li>BMI 계산</li>
<li>결측치 확인</li>
<li>평균 혈압 계산</li>
<li>머신러닝 학습용 데이터 생성</li>
</ul>
<p>등의 작업을 몇 줄의 코드만으로 수행할 수 있다.</p>
<hr>
<h3 id="마무리">마무리</h3>
<p>Pandas는 데이터 분석의 시작이라고 할 만큼 중요한 라이브러리다.</p>
<p>데이터를 불러오고, 원하는 데이터를 추출하고, 정리하는 대부분의 과정이 Pandas로 이루어진다.</p>
<p>다음 글에서는 <strong>탐색적 데이터 분석(EDA)</strong>을 통해 데이터를 어떻게 분석하고 숨겨진 패턴을 찾아내는지 알아보자.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[1일차_데이터 타입의 이해]]></title>
            <link>https://velog.io/@kumi_183/DataTypeDAY01</link>
            <guid>https://velog.io/@kumi_183/DataTypeDAY01</guid>
            <pubDate>Thu, 08 Jan 2026 13:01:23 GMT</pubDate>
            <description><![CDATA[<p>데이터는 크게 <strong>숫자형</strong>과 <strong>범주형</strong>으로 구분
<img src="https://mblogthumb-phinf.pstatic.net/MjAyMTAxMTRfOTcg/MDAxNjEwNjExOTUwNDU1.4o6KTYsdhu76Qbs1gKuUDpcPGiJsGStFJtkb_xpViWkg.-PaEnuVy9lai-OTKNru0fNE2AzBxjudQ-c6RlzJsm2Ig.PNG.cslee_official/KakaoTalk_20210114_144536332.png?type=w966" alt="데이터 타입 분류도" width="300"></p>
<h2 id="숫자형-데이터-numerical-data">숫자형 데이터 (Numerical Data)</h2>
<p>수치로 표현되며 산술 연산(더하기, 빼기, 평균 등)이 가능한 데이터</p>
<p>대표적인 예시</p>
<ul>
<li>나이 (25세)</li>
<li>키 (175cm)</li>
<li>몸무게 (68kg)</li>
<li>혈압 (120mmHg)</li>
<li>혈당 (95mg/dL)</li>
</ul>
<p>이러한 데이터는 평균, 분산, 표준편차 등을 계산할 수 있으며, 머신러닝 모델의 입력 데이터로도 많이 사용된다.</p>
<p>숫자형 데이터는 <strong>이산형 데이터(Discrete Data)</strong>와 <strong>연속형 데이터(Continuous Data)</strong>로 나뉜다.</p>
<hr>
<h3 id="1-이산형-데이터-discrete-data">1. 이산형 데이터 (Discrete Data)</h3>
<p>셀 수 있는 값을 가지는 데이터다.</p>
<p>값이 정수 형태로 존재하며 중간값을 가질 수 없다.</p>
<p>예를 들어,</p>
<ul>
<li>병원 방문 횟수 : 5회</li>
<li>자녀 수 : 2명</li>
<li>입원 횟수 : 1회</li>
<li>하루 약 복용 횟수 : 3회</li>
</ul>
<p>자녀 수는 2명과 3명 사이인 2.5명이 존재할 수 없기 때문에 이산형 데이터에 해당한다.</p>
<h3 id="2-연속형-데이터-continuous-data">2. 연속형 데이터 (Continuous Data)</h3>
<p>일정한 범위 안에서 어떤 값이든 가질 수 있는 데이터다.</p>
<p>소수점까지 표현이 가능하며, 측정을 통해 얻는 데이터가 대부분 연속형 데이터에 속한다.</p>
<p>예를 들어,</p>
<ul>
<li>체온 : 36.7℃</li>
<li>키 : 172.4cm</li>
<li>몸무게 : 63.8kg</li>
<li>혈당 : 98.5mg/dL</li>
</ul>
<p>연속형 데이터는 평균이나 분산 같은 통계 분석뿐 아니라 회귀(Regression) 모델에서도 자주 사용된다.</p>
<hr>
<h2 id="범주형-데이터-categorical-data">범주형 데이터 (Categorical Data)</h2>
<p>범주형 데이터는 <strong>특정 그룹이나 종류를 구분하기 위한 데이터</strong>다.</p>
<p>숫자로 표현될 수도 있지만, 그 숫자는 계산을 위한 값이 아니라 단순히 범주를 구분하기 위한 라벨일 뿐이다.</p>
<p>예를 들어,</p>
<ul>
<li>성별 : 남성, 여성</li>
<li>혈액형 : A형, B형, O형, AB형</li>
<li>흡연 여부 : 예, 아니오</li>
<li>질병 유무 : 정상, 질환</li>
</ul>
<p>범주형 데이터는 다시 <strong>명목형(Nominal)</strong>과 <strong>순서형(Ordinal)</strong>으로 나뉜다.</p>
<h3 id="1-명목형-데이터-nominal-data">1. 명목형 데이터 (Nominal Data)</h3>
<p>순서나 크기의 개념 없이 단순히 분류만 가능한 데이터다.</p>
<p>예를 들어,</p>
<ul>
<li>혈액형</li>
<li>성별</li>
<li>지역</li>
<li>질병 종류</li>
</ul>
<p>A형이 B형보다 크거나 작다고 말할 수 없기 때문에 명목형 데이터에 해당한다.</p>
<h3 id="2-순서형-데이터-ordinal-data">2. 순서형 데이터 (Ordinal Data)</h3>
<p>순서는 존재하지만, 값의 차이를 수치적으로 계산할 수 없는 데이터다.</p>
<p>예를 들어,</p>
<ul>
<li>만족도 : 매우 만족 &gt; 만족 &gt; 보통 &gt; 불만족</li>
<li>암 진행 단계 : 1기 → 2기 → 3기 → 4기</li>
<li>통증 정도 : 약함 → 보통 → 심함</li>
</ul>
<p>순서는 있지만 각 단계 사이의 간격이 일정하다고 볼 수 없기 때문에 평균을 계산하는 것은 적절하지 않다.</p>
<hr>
<h2 id="정리">정리</h2>
<table>
<thead>
<tr>
<th>데이터 타입</th>
<th>특징</th>
<th>예시</th>
</tr>
</thead>
<tbody><tr>
<td>숫자형</td>
<td>계산이 가능</td>
<td>키, 몸무게, 혈당</td>
</tr>
<tr>
<td>이산형</td>
<td>셀 수 있는 값</td>
<td>방문 횟수, 자녀 수</td>
</tr>
<tr>
<td>연속형</td>
<td>측정되는 값</td>
<td>체온, 혈압</td>
</tr>
<tr>
<td>범주형</td>
<td>그룹을 구분</td>
<td>성별, 혈액형</td>
</tr>
<tr>
<td>명목형</td>
<td>순서 없음</td>
<td>혈액형, 지역</td>
</tr>
<tr>
<td>순서형</td>
<td>순서 있음</td>
<td>만족도, 암 진행 단계</td>
</tr>
</tbody></table>
<hr>
<h3 id="ai-healthcare에서는-왜-데이터-타입이-중요할까">AI Healthcare에서는 왜 데이터 타입이 중요할까?</h3>
<p>AI 모델은 데이터 타입에 따라 전처리 방법이 달라진다.</p>
<p>예를 들어 키나 혈당처럼 숫자형 데이터는 <strong>정규화(Normalization)</strong>나 <strong>표준화(Standardization)</strong>를 수행하는 경우가 많고, 성별이나 혈액형 같은 범주형 데이터는 <strong>원-핫 인코딩(One-Hot Encoding)</strong> 등을 이용해 모델이 학습할 수 있는 숫자 형태로 변환한다.</p>
<p>즉, 데이터를 분석하기 전에 <strong>각 변수의 데이터 타입을 정확하게 파악하는 것</strong>이 데이터 분석과 머신러닝의 첫 단계라고 할 수 있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[2일차_가중합과 선형방정식]]></title>
            <link>https://velog.io/@kumi_183/Weighted-Sum</link>
            <guid>https://velog.io/@kumi_183/Weighted-Sum</guid>
            <pubDate>Wed, 07 Jan 2026 14:53:41 GMT</pubDate>
            <description><![CDATA[<h2 id="가중합weighted-sum">가중합(Weighted Sum)</h2>
<p>AI가 여러 정보를 종합해서 하나의 예측값을 만드는 가장 기본적인 방법
각 정보에 중요도(가중치)를 곱해서 모두 더하는 것</p>
<p><code>선형방정식 = 가중합 + 편향</code></p>
<h3 id="편향bias">편향(Bias)</h3>
<p>모든 입력이 0일 때도 가지는 기본값</p>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/58713929-d8c8-4f17-bcbe-266105c7ff99/image.png" alt=""></p>
<p>결과
<img src="https://velog.velcdn.com/images/kumi_183/post/9cc805db-8c86-49b3-8417-321fdae6115d/image.png" alt=""></p>
<h3 id="여러-환자의-약물-투여량-계산">여러 환자의 약물 투여량 계산</h3>
<h3 id="ai가-가중치를-학습하는-과정">AI가 가중치를 학습하는 과정</h3>
<h4 id="최적-가중치-찾기">최적 가중치 찾기</h4>
<br>
<hr>
<br>

]]></description>
        </item>
        <item>
            <title><![CDATA[1일차_numpy 기초]]></title>
            <link>https://velog.io/@kumi_183/numpy</link>
            <guid>https://velog.io/@kumi_183/numpy</guid>
            <pubDate>Tue, 06 Jan 2026 15:58:20 GMT</pubDate>
            <description><![CDATA[<h2 id="스칼라-벡터-행렬과-의료-데이터">스칼라, 벡터, 행렬과 의료 데이터</h2>
<h3 id="스칼라-scalar">스칼라 (Scalar)</h3>
<p>환자의 개별 정보</p>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/08d0d9fe-c63b-493b-ad2d-cb95e7510c1d/image.png" alt=""></p>
<h3 id="벡터-vector">벡터 (Vector)</h3>
<p>환자 한 명의 여러 특성을 하나로 묶은 것
<img src="https://velog.velcdn.com/images/kumi_183/post/463232d8-f376-4722-9386-4b4e2bb757d9/image.png" alt=""></p>
<h3 id="행렬-matrix">행렬 (Matrix)</h3>
<p>여러 환자들의 정보를 표 형태로 정리한 것
<img src="https://velog.velcdn.com/images/kumi_183/post/9a29d9cd-2f0f-43c5-ae9b-91ec7c0eb747/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[7일차_파일처리 & 예외처리]]></title>
            <link>https://velog.io/@kumi_183/DAY07</link>
            <guid>https://velog.io/@kumi_183/DAY07</guid>
            <pubDate>Mon, 05 Jan 2026 02:27:17 GMT</pubDate>
            <description><![CDATA[<h2 id="파일-입출력">파일 입출력</h2>
<ul>
<li>프로그램에서 외부 파일에 데이터를 저장하거나 읽어오는 작업</li>
<li>프로그램과 외부 파일 간의 데이터 교환을 통해 정보를 영구적으로 보존하고 공유할 수 있게 해준다.</li>
</ul>
<blockquote>
<p>환자 진료기록: 진단명, 처방 내역, 치료 과정을 파일로 기록
검사 결과: 혈액검사, 영상검사 데이터를 파일에 저장
병원 운영: 직원 정보, 일정 관리, 재고 현황을 파일로 관리
데이터 백업: 중요한 의료 정보를 안전하게 보관</p>
</blockquote>
<p>open() 함수를 사용해 파일을 열고,
모드를 지정해 어떤 작업을 할지 결정한다. </p>
<p>file = open(&#39;파일명.txt&#39;, &#39;모드&#39;, encoding=&#39;utf-8&#39;)
file.close()</p>
<h3 id="with-문">with 문</h3>
<p>파일을 자동으로 닫아주는 안전한 파일 처리 방법</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[6일차_객체지향 프로그래밍]]></title>
            <link>https://velog.io/@kumi_183/DAY06</link>
            <guid>https://velog.io/@kumi_183/DAY06</guid>
            <pubDate>Fri, 02 Jan 2026 08:46:51 GMT</pubDate>
            <description><![CDATA[<h2 id="객체지향-프로그래밍">객체지향 프로그래밍</h2>
<p>데이터를 어떻게 구조화하는지 정의하고 해당 데이터를 수정할 수 있는 함수를 제공하는 프로그래밍 방식</p>
<ul>
<li>프로그램을 실제 세상의 객체처럼 구현하는 방식</li>
<li>데이터와 해당 데이터를 처리하는 코드를 하나로 묶어 관리</li>
<li>예시: 환자라는 객체는 이름, 나이, 병력(데이터)과 진료받기, 처방받기(기능)을 가짐</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[5일차_함수]]></title>
            <link>https://velog.io/@kumi_183/DAY05</link>
            <guid>https://velog.io/@kumi_183/DAY05</guid>
            <pubDate>Wed, 31 Dec 2025 04:33:33 GMT</pubDate>
            <description><![CDATA[<h2 id="함수">함수</h2>
<p>함수는 특정 작업을 수행하는 코드 블록으로,
재사용 가능하고 코드를 깔끔하게 정리할 수 있게 해준다.</p>
<ul>
<li>함수 정의: <code>def</code> 키워드를 사용하여 함수를 선언</li>
<li>함수 호출: 정의된 함수를 실행하는 것</li>
</ul>
<br>

<h3 id="매개변수parameter와-인수argument">매개변수(Parameter)와 인수(Argument)</h3>
<p>매개변수와 인수는 함수에서 데이터를 주고받는 핵심 개념 이다.</p>
<ul>
<li><strong>매개변수</strong>는 함수를 정의할 때 입력값을 받기 위해 설정하는 변수</li>
<li><strong>인수</strong>는 함수를 호출할 때 매개변수에 실제로 전달하는 값</li>
</ul>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/fb253438-6227-40f1-b25c-c4aebd14f37d/image.png" alt=""></p>
<h3 id="반환값return">반환값(return)</h3>
<p>함수에서 계산된 결과값을 호출한 곳으로 돌려주거나, 함수의 실행을 중단시키는 역할
return은 반환받은 값을 다른 코드에 사용해야 할때 사용</p>
<ol>
<li>값 반환 - 함수 결과를 돌려주기
<img src="https://velog.velcdn.com/images/kumi_183/post/d8c1f43f-61e0-4578-8e9f-abb18006827e/image.png" alt=""></li>
</ol>
<ul>
<li>여러개의 값 반환: 여러개의 값을 반환할때는 하나의 튜플로 묶여 반환됨
<img src="https://velog.velcdn.com/images/kumi_183/post/ba45decb-91d9-4525-b05b-4887585351ab/image.png" alt=""></li>
</ul>
<ol start="2">
<li>함수 종료 - 실행 중단하기
<img src="https://velog.velcdn.com/images/kumi_183/post/f390adcf-d4ea-4793-b5bb-a630978337d3/image.png" alt=""></li>
</ol>
<h3 id="default-parameter---기본값-설정">Default Parameter - 기본값 설정</h3>
<p>함수 호출 시 인수를 생략했을 때 자동으로 사용될 값을 미리 설정하는 방식
이는 함수 사용의 편의성을 높이고 코드 유연성을 향상시킴.</p>
<h3 id="keyword-arguments---이름키워드으로-전달">Keyword Arguments - 이름(키워드)으로 전달</h3>
<p>매개변수 이름을 지정하여 순서에 상관없이 인수를 전달하는 방법
함수 호출의 가독성을 높이고 매개변수가 많은 함수를 안전하게 사용할 수 있게 함</p>
<h3 id="람다함수-lambda-functions">람다함수 (Lambda Functions)</h3>
<p>간단한 함수를 한 줄로 정의할 수 있는 익명 함수
의료 데이터 처리에서 환자 목록 정렬, 조건부 필터링, 데이터 변환 등에 매우 유용</p>
<p>✅ 간단한 계산이나 변환
✅ 일회성 정렬/필터링
✅ map, filter, sorted 함수와 함께
✅ 즉석 데이터 처리</p>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/a02b8c02-5406-490e-a7a3-052d1f4bcd9e/image.png" alt=""></p>
<h3 id="함수-설계-원칙">함수 설계 원칙</h3>
<p>좋은 함수를 만들기 위한 핵심 원칙들</p>
<ol>
<li><p>단일 책임 원칙
: 하나의 함수는 하나의 일만 해야 합니다.</p>
</li>
<li><p>의미 있는 함수명
: 함수명만 봐도 무엇을 하는지 알 수 있어야 합니다.</p>
</li>
<li><p>적절한 크기: 너무 길지 않게 (일반적으로 20줄 이내)</p>
</li>
<li><p>재사용성: 다양한 상황에서 활용 가능하게</p>
</li>
<li><p>독립성: 다른 함수에 과도하게 의존하지 않게</p>
</li>
</ol>
<h3 id="타입-힌팅-type-hints">타입 힌팅 (Type Hints)</h3>
<p>함수의 입력과 출력 타입을 명시하여 코드의 가독성과 안정성을 높이는 방법</p>
<ul>
<li>타입 힌팅의 장점
  <strong>1. 코드 가독성 향상:</strong> 함수의 입출력이 명확해짐
  <strong>2. 버그 예방:</strong> 잘못된 타입 사용을 미리 발견
  <strong>3. 개발 도구 지원:</strong> IDE에서 자동완성과 오류 검출 향상
  <strong>4. 문서화 효과:</strong> 별도 문서 없이도 함수 사용법을 알 수 있음
  <strong>5. 팀 협업 개선:</strong> 다른 개발자가 함수를 이해하기 쉬움</li>
</ul>
<br>
<hr>

<h2 id="문제">문제</h2>
<h3 id="1-체온-측정-알림">1. 체온 측정 알림</h3>
<p>체온 측정 안내 메시지를 출력하는 함수를 작성하여 실행하세요.
<img src="https://velog.velcdn.com/images/kumi_183/post/d9357a2a-2969-469b-aea2-965e35ba2ae8/image.png" alt=""></p>
<h3 id="2-환자-정보-출력">2. 환자 정보 출력</h3>
<p>환자의 이름과 나이를 입력받아 정보를 출력하는 함수를 작성하세요.
<img src="https://velog.velcdn.com/images/kumi_183/post/3e0d23af-3b50-4e17-a442-5e99e346086e/image.png" alt=""></p>
<h3 id="3-혈압-등급-분류">3. 혈압 등급 분류</h3>
<p>환자의 혈압을 입력받아 혈압 등급을 반환하는 함수를 작성하세요.
<img src="https://velog.velcdn.com/images/kumi_183/post/5cf3e811-e5f4-4dbd-bc19-7577139f0f32/image.png" alt=""></p>
<h3 id="4-병원-안내-메시지">4. 병원 안내 메시지</h3>
<p>병원 안내 메시지를 생성하는 함수를 작성하세요.
<img src="https://velog.velcdn.com/images/kumi_183/post/02c6ba7d-23fc-4e44-b991-62311593d944/image.png" alt=""></p>
<h3 id="5-처방전-생성">5. 처방전 생성</h3>
<p>환자 처방전을 생성하는 함수를 작성하세요. 기본값과 키워드 인수를 적절히 활용하세요.
<img src="https://velog.velcdn.com/images/kumi_183/post/66736c31-a594-48a8-8bb7-d04fe7302cfe/image.png" alt=""></p>
<h3 id="6-환자-체온-분류">6. 환자 체온 분류</h3>
<p>환자의 체온을 받아서 발열 여부를 판단하는 함수를 두 가지 방식으로 작성하세요.
<img src="https://velog.velcdn.com/images/kumi_183/post/201f3ca8-b675-4549-b0af-277fc4ac2205/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[4일차_반복문]]></title>
            <link>https://velog.io/@kumi_183/DAY04</link>
            <guid>https://velog.io/@kumi_183/DAY04</guid>
            <pubDate>Tue, 30 Dec 2025 05:56:48 GMT</pubDate>
            <description><![CDATA[<h2 id="반복문">반복문</h2>
<p>반복문은 특정 조건에 따라 똑같은 기능을 반복해서 수행하는 구문이다.
의료 현장에서는 여러 환자의 데이터를 처리하거나, 검사 결과를 순차적으로 분석할 때 반복문이 필수적이다.</p>
<h2 id="for-문">for 문</h2>
<p>정해진 범위나 리스트의 요소들을 순회하며 하나씩 처리할 때 사용</p>
<ol>
<li>반복 대상에 값 하나 꺼냄</li>
<li>변수에 저장</li>
<li>코드 실행</li>
<li>다음 값 꺼냄</li>
<li>끝날 때까지 반복</li>
</ol>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/ca80008c-d42d-46cf-91e5-a2164aaf5054/image.png" alt=""></p>
<h3 id="①-enumerate">① enumerate()</h3>
<ul>
<li>인덱스(순서)와 값을 함께 가져올 때 사용</li>
<li>반환값: (인덱스, 값) 튜플
<img src="https://velog.velcdn.com/images/kumi_183/post/d0348534-ac68-44bc-a854-eadc018062b6/image.png" alt=""></li>
</ul>
<h3 id="➁-zip">➁ zip()</h3>
<ul>
<li>여러 개의 리스트를 동시에 순회할 때 사용</li>
<li>반환값: 각 리스트의 요소들을 묶은 튜플</li>
</ul>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/27bb8be7-209e-4ef9-af2a-de2bda34946f/image.png" alt=""></p>
<h3 id="➂-range">➂ range()</h3>
<ul>
<li>연속된 숫자를 생성하는 함수</li>
<li>반환값: 숫자 시퀀스</li>
</ul>
<p>range() 함수의 인자
<code>range(끝)</code> : 0부터 끝-1까지
<code>range(시작, 끝)</code> : 시작부터 끝-1까지
<code>range(시작, 끝, 간격)</code> : 시작부터 끝-1까지 간격만큼 증가</p>
<br>

<p>(1) 리스트로 변환하기</p>
<img src=https://velog.velcdn.com/images/kumi_183/post/232069c6-01e9-4438-8624-88c50ce83e5e/image.png align=left>

<img src=https://velog.velcdn.com/images/kumi_183/post/c2733f2e-b07a-4a06-a578-e3b69e87252e/image.png align=left>

<img src=https://velog.velcdn.com/images/kumi_183/post/821b9b72-013d-4aa3-9c57-d8f199394453/image.png align=left>

<img src=https://velog.velcdn.com/images/kumi_183/post/ce8baf87-0d71-44e8-8cbf-a300eded8905/image.png align=left>


<p><br><br></p>
<p>(2) 반복문에서 사용하기</p>
<img src=https://velog.velcdn.com/images/kumi_183/post/51dd044b-9887-4f5a-984b-a1c1d14a7655/image.png align=left>

<img src=https://velog.velcdn.com/images/kumi_183/post/3a40d3d5-46a6-41ad-9d24-9fafdbee0127/image.png align=left>

<img src=https://velog.velcdn.com/images/kumi_183/post/f9953648-49dd-4724-ac1c-f1c5ea888e4c/image.png align=left>

<img src=https://velog.velcdn.com/images/kumi_183/post/49f992ad-eef0-41e1-855f-013146984a05/image.png align=left>

<br>
<br>



<hr>
<h2 id="while문">while문</h2>
<p>조건이 참인 동안 계속 반복</p>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/b60f239e-cf0e-4f1a-9dd0-8888f13416ac/image.png" alt=""></p>
<h2 id="break와-continue">break와 continue</h2>
<p>break: 반복문을 완전히 종료
continue: 현재 반복을 건너뛰고 다음 반복으로</p>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/e82ff4d8-f189-453d-927e-34b1304714a0/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/eebad7e9-4e74-4e9a-9c0b-f66e87124396/image.png" alt=""></p>
<br>


<h2 id="내포용법-list-comprehension">내포용법 (List Comprehension)</h2>
<p>리스트를 간단하게 만드는 방법</p>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/0579d11f-555a-4bea-bc93-ed3098ba4902/image.png" alt=""></p>
<br>
<hr>

<h2 id="문제">문제</h2>
<h3 id="1-약물-복용-안내">1. 약물 복용 안내</h3>
<p>처방된 약물들에 대해 복용 안내를 출력하세요.</p>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/c7e75474-2160-4f24-a862-eba7805c5132/image.png" alt=""></p>
<h3 id="2-검사-항목-번호-매기기">2. 검사 항목 번호 매기기</h3>
<p>검사 항목에 번호를 매겨서 출력하세요.</p>
<ul>
<li>내가 한 것
<img src="https://velog.velcdn.com/images/kumi_183/post/2f992871-adcd-4e16-9e6c-9c144243644d/image.png" alt=""></li>
<li>정답
<img src="https://velog.velcdn.com/images/kumi_183/post/15279536-d1cb-4381-9f6a-8e57ec7afb5a/image.png" alt=""></li>
</ul>
<blockquote>
<p>나의 코드는 enumerate(test_items)는 기본적으로 번호를 0부터 시작, 
그래서 출력할 때 index + 1을 해줘야 1번부터 표시됨.
정답 코드는 enumerate(test_items, 1)에서 숫자를 처음부터 1로 시작하라고 설정했기 때문에, +1만큼 처리할 필요가 없음.
-&gt; *<em>정답 코드처럼 enumerate(test_items, 1) 바로 시작점 지정하는 방식이
가독성도 좋고, 실수도 줄일 수 있어서 더 파이썬스러운(Pythonic) 코드이다.
*</em></p>
</blockquote>
<br>
<br>

<h3 id="3-환자-처방-매칭">3. 환자 처방 매칭</h3>
<p>zip()을 활용하여 환자 명단과 처방 약물, 복용법을 함께 출력하세요.</p>
<ul>
<li>내가 한 것
<img src="https://velog.velcdn.com/images/kumi_183/post/4b2a5d2d-d739-487e-a9a4-f982f03f9f52/image.png" alt=""></li>
<li>정답
<img src="https://velog.velcdn.com/images/kumi_183/post/bb876a1e-64ee-45da-bf99-da9f1a95c9aa/image.png" alt=""></li>
</ul>
<blockquote>
<p>*<em>나의 코드와 정답 코드는 변수 이름만 다를 뿐, 동작 결과는 같다. *</em>
zip(list1, list2, list3)는 리스트들을 같은 인덱스끼리 묶어서 튜플로 반환
for 변수1, 변수2, 변수3 in zip(...) 형태로 바로 각 값 언패킹
변수 이름은 개발자가 보기 좋게 의미만 잘 전달하면 아무거나 써도 OK</p>
</blockquote>
<br>
<br>

<h3 id="4-병실-점검">4. 병실 점검</h3>
<p>range를 활용하여 101호부터 105호까지의 병실을 점검하는 메시지를 출력하세요.
<img src="https://velog.velcdn.com/images/kumi_183/post/4e4369ec-0429-47e3-b9a1-086d1a2e0e98/image.png" alt=""></p>
<h3 id="5-환자-정보-출력">5. 환자 정보 출력</h3>
<p>환자의 기본 정보를 <code>[항목]: [값]</code> 형태로 모두 출력하세요.</p>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/753864c6-3a7a-4ff0-babb-0fd2e4a52def/image.png" alt=""></p>
<ul>
<li>딕셔너리에서 key, value 꺼낼 때는 <code>patient.items()</code> 를 사용해야 함.</li>
</ul>
<br>

<h3 id="6-응급환자-발견">6. 응급환자 발견</h3>
<p>환자들의 체온을 순서대로 확인하다가 38.5도 이상인 고열 환자를 발견하면 &quot;응급환자 발견! 즉시 처치 필요&quot; 출력하고 반복을 중단하세요.
<img src="https://velog.velcdn.com/images/kumi_183/post/ff573238-845c-49dd-b680-24a3a78f1137/image.png" alt=""></p>
<h3 id="7-정상-혈압-환자">7. 정상 혈압 환자</h3>
<p>혈압 리스트에서 정상 혈압(120 이하)인 환자의 혈압만 골라내는 새로운 리스트를 만드세요. (리스트 컴프리헨션 사용)
<img src="https://velog.velcdn.com/images/kumi_183/post/de931bca-92eb-49f4-a0b1-3e24646fe307/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[3일차_제어문]]></title>
            <link>https://velog.io/@kumi_183/DAY03</link>
            <guid>https://velog.io/@kumi_183/DAY03</guid>
            <pubDate>Mon, 29 Dec 2025 09:00:25 GMT</pubDate>
            <description><![CDATA[<h2 id="조건문">조건문</h2>
<p>주어진 조건에 따라 다른 코드를 실행하는 구문.
환자의 상태나 검사 결과에 따라 다른 처치를 결정해야 하기때문에 중요하다.</p>
<h3 id="if문">if문</h3>
<p><code>if 조건식:</code>
    <code>print(&quot;조건식이 True입니다&quot;)</code></p>
<h3 id="bool-자료형">bool 자료형</h3>
<p>참(True) 또는 거짓(False) 두 가지 값만 가진다.
조건식에는 무조건 bool 자료형이 들어가야 한다.</p>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/3c2c5281-d096-4293-b5f9-ce511242eadc/image.png" alt="">
<img src="https://velog.velcdn.com/images/kumi_183/post/c0f15f25-a311-41f1-ad0d-1b52bf9fc05d/image.png" alt=""></p>
<h3 id="여러-조건-처리-if-elif-else">여러 조건 처리 if-elif-else</h3>
<p>여러 개의 조건을 순서대로 확인하여 해당하는 조건의 코드만 실행
<img src="https://velog.velcdn.com/images/kumi_183/post/5d2b5d57-813f-4bd7-b8eb-3d812bf3d723/image.png" alt=""></p>
<h3 id="조건식-연산자">조건식 연산자</h3>
<ol>
<li><p>비교 연산자
: 값들을 비교할 때 사용</p>
</li>
<li><p>포함 연산자 (in, not in)
: 리스트나 문자열에 특정 값이 포함되어 있는지 확인할 때 사용</p>
</li>
<li><p>논리 연산자
: 여러 조건을 조합해서 더 복잡한 조건을 만들 때 사용</p>
</li>
</ol>
<ul>
<li>and 연산자: 모든 조건이 True 일 때만 True</li>
<li>or 연산자: 하나라도 True 이면 True</li>
<li>not 연산자: True를 False로, False를 True로</li>
</ul>
<h3 id="삼항-연산자">삼항 연산자</h3>
<p> 간단한 if-else 구문을 한 줄로 표현하는 방법. 조건문 코드를 간결하게 작성 가능!</p>
<blockquote>
<p><code>변수 = 값1 if 조건 else 값2</code>
조건이 True이면 값1, False이면 값2를 변수에 저장</p>
</blockquote>
<h3 id="조건문-처리-방식-비교">조건문 처리 방식 비교</h3>
<p>다중 조건 (if-elif-else)
: 하나만 선택해야 할 때,    첫 번째 참인 조건만 실행</p>
<p>독립 조건 (if-if-if)
: 각각 별도로 확인할 때,    모든 조건을 개별 확인</p>
<p>중첩 조건 (if 안의 if)
: 단계별 확인이 필요할 때,    조건을 만족해야 다음 단계 진행</p>
<br>
<hr>

<h1 id="문제">문제</h1>
<h3 id="1-환자의-체온을-확인">1. 환자의 체온을 확인</h3>
<p>발열이 있는 경우에만 메시지를 출력하세요.
37.5도 이상이면 &quot;발열이 감지되었습니다&quot; 출력
<img src="https://velog.velcdn.com/images/kumi_183/post/be75e610-12de-4d14-bbd9-9f5df95dd39a/image.png" alt=""></p>
<h3 id="2-수술-시간-결정">2. 수술 시간 결정</h3>
<p>환자가 금식한 시간에 따라 수술 가능 여부를 결정하세요.
8시간 이상 금식했으면 &quot;수술 가능&quot;, 그렇지 않으면 &quot;금식 시간 부족&quot; 출력
<img src="https://velog.velcdn.com/images/kumi_183/post/0d58290d-85ba-454a-83db-4a13fce9e7ac/image.png" alt=""></p>
<h3 id="3-심박수-분류">3. 심박수 분류</h3>
<p>환자의 심박수를 확인하여 상태를 분류하세요.
60 미만: &quot;서맥&quot;, 60-100: &quot;정상&quot;, 100 초과: &quot;빈맥&quot;
<img src="https://velog.velcdn.com/images/kumi_183/post/5a670e5b-008c-4f86-a50e-2a516ec73827/image.png" alt=""></p>
<ul>
<li>= 이 있으면 변수 저장 → 괄호 필요 없음 <code>print(또는 함수명)</code> 뒤에는 항상 괄호 !!!</li>
</ul>
<h3 id="4-퇴원-승인">4. 퇴원 승인</h3>
<p>환자의 퇴원 조건을 확인하세요.
체온 37도 미만이면서 통증이 3 이하인 경우 &quot;퇴원 승인&quot;
조건을 만족하지 않으면 &quot;추가 관찰 필요&quot; 출력
<img src="https://velog.velcdn.com/images/kumi_183/post/0ce20a50-e371-4b40-ba5c-842866f22c36/image.png" alt=""></p>
<h3 id="5-응급실-내원-권고">5. 응급실 내원 권고</h3>
<p>다음 증상 중 하나라도 있으면 응급실 내원을 권고하세요.
심한 가슴통증, 호흡곤란, 의식저하 중 하나라도 있으면 &quot;즉시 응급실 내원&quot;
모든 증상이 없으면 &quot;일반 진료 예약&quot; 출력
<img src="https://velog.velcdn.com/images/kumi_183/post/541ca4e0-e49c-4923-99ea-d48f64c2fe6e/image.png" alt=""></p>
<h3 id="6-처방-금기-확인">6. 처방 금기 확인</h3>
<p>환자의 임신 여부에 따라 약물 처방 가능성을 판단하세요. 
임신하지 않았으면 &quot;처방 가능&quot;, 임신했으면 &quot;처방 금기&quot; 삼항 연산자를 사용하여 작성하세요.
<img src="https://velog.velcdn.com/images/kumi_183/post/aab4450b-f191-4e6f-adc4-073bba3ae913/image.png" alt="">
↓ 삼항 연산자 사용 ↓
<img src="https://velog.velcdn.com/images/kumi_183/post/5495b647-57c3-49ff-8e06-b602ceaf8753/image.png" alt=""></p>
<h3 id="7-독립-조건---환자-증상-확인">7. 독립 조건 - 환자 증상 확인</h3>
<p>환자의 증상을 확인하여 해당하는 처방을 각각 출력하세요.
발열이 있으면 &quot;해열제 처방&quot;, 기침이 있으면 &quot;기침약 처방&quot;, 두통이 있으면 &quot;진통제 처방&quot;을 출력하고,
해당 증상이 없으면 아무것도 출력하지 않습니다.
<img src="https://velog.velcdn.com/images/kumi_183/post/8ffaed44-0f37-4125-a69e-c5c15e77e0b0/image.png" alt=""></p>
<h3 id="8-중첩-조건---약물-처방-확인">8. 중첩 조건 - 약물 처방 확인</h3>
<p>환자의 나이를 먼저 확인한 후, 성인(18세 이상)인 경우에만 알레르기 여부를 확인해서 처방을 결정하세요.</p>
<ul>
<li>성인이고 알레르기가 없는 경우: &quot;성인용 약물을 처방합니다.&quot;</li>
<li>성인이지만 알레르기가 있는 경우: &quot;알레르기 대체 약물을 처방합니다.&quot;</li>
<li>미성년자인 경우: &quot;소아용 약물을 처방합니다.&quot;</li>
</ul>
<p>내가 한거
<img src="https://velog.velcdn.com/images/kumi_183/post/27733412-fc23-4a9e-a8cb-f52f8db4049a/image.png" alt=""></p>
<p>정답
<img src="https://velog.velcdn.com/images/kumi_183/post/afc8ed82-d65d-4220-b728-e451ec9479ef/image.png" alt=""></p>
<br>
<hr>
<br>

<h2 id="실전-예제-환자-입원-승인-시스템">실전 예제: 환자 입원 승인 시스템</h2>
<p><img src="https://velog.velcdn.com/images/kumi_183/post/a12a6a5c-0575-42f2-9618-32809a10335b/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[2일차_자료구조]]></title>
            <link>https://velog.io/@kumi_183/DAY02</link>
            <guid>https://velog.io/@kumi_183/DAY02</guid>
            <pubDate>Fri, 26 Dec 2025 14:40:51 GMT</pubDate>
            <description><![CDATA[<p>자료구조는 많은 양의 데이터를 체계적으로 다루는 방법이다.
파이썬에는 여러 데이터를 효율적으로 관리하는 4가지 주요 자료구조가 있다.</p>
<h2 id="리스트">리스트</h2>
<p>여러 개의 데이터를 하나의 변수에 순서대로 저장
<code>[  ]</code> 로 감싸고 각 요솟값은 쉼표로 구분</p>
<h3 id="인덱싱">인덱싱</h3>
<p>특정 위치의 데이터 가져오기</p>
<h3 id="슬라이싱">슬라이싱</h3>
]]></description>
        </item>
    </channel>
</rss>