<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Study Log</title>
    <link>https://sssadie.tistory.com/</link>
    <description>sadie의 공부 기록 </description>
    <language>ko</language>
    <pubDate>Wed, 22 Jul 2026 06:03:47 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>Sssadie</managingEditor>
    <item>
      <title>패스트캠퍼스 환급챌린지 50일차 : 테디노트의 RAG 비법노트 강의 후기</title>
      <link>https://sssadie.tistory.com/54</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: center;&quot;&gt;본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #222222; text-align: center;&quot;&gt;작성하였습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;정규 표현식(Regular Expression)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;텍스트에서 일치되는 패턴을 찾는 문자열을 표현하는 방식&lt;br /&gt;- 문자열을 찾거나, 바꾸는 데에 활용&lt;br /&gt;- 문자열의 정합성 검증에 사용&lt;/li&gt;
&lt;li&gt;파이썬의 경우, 표준 라이브러리인 re를 이용&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;정규 표현식의 활용 예&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이 소설책에 주인공 이름이 몇 번 나타나나요?&lt;/li&gt;
&lt;li&gt;주어진 문장에서 전화번호만 추출하고 싶어요.&lt;/li&gt;
&lt;li&gt;입력 받은 텍스트가 이메일 주소 양식이 맞나요?&lt;/li&gt;
&lt;li&gt;어떤 규칙을 갖는 텍스트 앞 뒤로 어떤 단어가 있는지 궁금해요.&lt;/li&gt;
&lt;li&gt;주민등록번호 7자리를 yyyy-mm-dd 형태의 생일로 변경하고 싶어요.&lt;/li&gt;
&lt;li&gt;로그파일을 분석해서 중대한 결함이 발견되면 메일로 알람을 보내고 싶어요.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;파이썬의 정규 표현식 : re패키지&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;정규 표현식의 기본 개념&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;메타 문자 : 패턴의 구조를 정의하는 데에 사용&lt;/li&gt;
&lt;li&gt;특수 문자 : 개행, 탭, 문자 또는 숫자를 의미하는 등 사전에 정의된 특수 문자&lt;/li&gt;
&lt;li&gt;문자 집합 : 여러 문자와 매칭되는 패턴. 예를 들어, [aeiou]는 소문자 모음 한 글자를 의미&lt;/li&gt;
&lt;li&gt;반복자 : 패턴의 일부 또는 전체가 반복되는 것을 나타냄. *은 0회 이상, +는 1회 이상&lt;/li&gt;
&lt;li&gt;그룹화 : 패턴의 일부를 그룹화하여, 반복자를 사용하거나 매치된 부분을 추출하는데 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;정규표현식을 통한 탐색&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;re.search(pattern, string, flags=0): string에서 pattern이 일치하는 첫 번째 매치를 반환&lt;/li&gt;
&lt;li&gt;re.match(pattern, string, flags=0): string의 시작 부분에서부터 pattern이 일치하면 해당 매치를 반환&lt;/li&gt;
&lt;li&gt;re.fullmatch(pattern, string, flags=0): 전체 string이 정규식 패턴과 일치하면 그 매치를 반환&lt;/li&gt;
&lt;li&gt;re.findall(pattern, string, flags=0): string에서 매치되는 모든 결과를 문자열 또는 튜플 형태로 반환&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;정규 표현식을 통한 수정&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;re.sub(pattern, repl, string, count=0, flags=0)&lt;br /&gt;- pattern: 찾고자 하는 정규 표현식 패턴&lt;br /&gt;- repl: 패턴과 매치된 부분을 대체할 문자열&lt;br /&gt;- string: 대상이 되는 전체 문자열&lt;br /&gt;- count: 치환할 최대 횟수. 기본값은 0으로, 0인 경우 모든 매치를 치환함&lt;br /&gt;- flags: 특수 조건 flags&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;정규식 객체(re.Pattern)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정규식 객체 만들기: re.compile(pattern, flags=0)&lt;/li&gt;
&lt;li&gt;하나의 정규식이 단일 프로그램 내에서 여러 번 사용될 때, compile을 통해 정규식 객체를 재사용하는 것이 보다 효율적&lt;/li&gt;
&lt;li&gt;정규식 객체 생성 시 flags를 적용할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;매치 객체(re.Match)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;search 및 match의 결과가 저장되는 객체&lt;/li&gt;
&lt;li&gt;일치하는 값이 있을 때는 반드시 True를 값으로 가짐(이외에는 None)&lt;br /&gt;- if re.search(pattern, string):&lt;/li&gt;
&lt;li&gt;괄호를 통해 그룹을 지정하고, 특정 위치의 그룹을 가져올 수 있음: Match.group()&lt;/li&gt;
&lt;li&gt;매치의 위치 (시작, 끝, span) 값을 다양하게 활용&lt;br /&gt;- Match.start(), Match.end(), ...&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size18&quot;&gt;정규 표현식 활용법: 핸드폰 번호 추출하기&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;주어진 개인 정보에서 핸드폰 번호 패턴을 정의하고, 이를 추출한다.&lt;/li&gt;
&lt;li&gt;한국 전화번호의 경우 01x-xxxx-xxxx 형태의 규칙을 가짐&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1767184069594&quot; class=&quot;scala&quot; data-ke-language=&quot;scala&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import re
phone_number_pattern = re.compile(r'01[016789]-\d{4}-\d{4}')

personal_info = &quot;&quot;&quot;
이름: 홍길동
주소: 서울시 강남구
전화번호: 010-1234-5678
주민등록번호: 930101-1234567
&quot;&quot;&quot;

match = phone_number_pattern.search(personal_info)
if match:
    print(f&quot;핸드폰 번호: {match.group()}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정규표현식은 처음에 배울 때 복잡한 기호들의 조합이 어렵게 느껴졌어요. \d, *, +, [] 같은 메타 문자들이 어떤 상황에서 어떻게 쓰이는지 혼란스럽죠. 하지만 이 패턴들을 이해하고 나면, 텍스트 처리에서 정말 강력한 도구가 된다는 걸 깨달을 수 있어요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RAG 시스템을 구축할 때 정규 표현식은 생각보다 자주 사용되더라고요. 특히, 대량의 문서를 처리하기 전에 데이터를 정제하는 단계에서요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전처리 단계에서 활용되는 사례를 찾아보면, 다음과 같이 정리해 볼 수 있죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 문서에서 이메일 주소, URL, 전화번호 같은 특정 패턴 추출&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 불필요한 특수문자나 HTML 태그 제거&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 날짜, 시간 같은 구조화된 정보 통일된 형식으로 변환&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 문장 분리나 청킹 작업 시 구분자 찾기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 법률 문서나 의료 기록처럼 민감한 정보가 포함된 문서를 RAG에 활용할 때, 개인정보를 마스킹하거나 제거하는 작업이 필수죠. 이때 정규표현식을 활용하면 효율적으로 처리할 수 있어요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정규표현식과 단순문자열 처리를 간단한 예시로 표현해볼게요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[일반적인 문자열 처리]&lt;/p&gt;
&lt;pre id=&quot;code_1767184536849&quot; class=&quot;scala&quot; data-ke-language=&quot;scala&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 전화번호 찾기 - 비효율적
text = &quot;연락처: 010-1234-5678, 02-9876-5432&quot;
if &quot;010-&quot; in text:
    # 전화번호 추출 로직 작성... 복잡함
    pass&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[정규 표현식 사용]&lt;/p&gt;
&lt;pre id=&quot;code_1767184564153&quot; class=&quot;scala&quot; data-ke-language=&quot;scala&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 전화번호 찾기 - 효율적
import re
text = &quot;연락처: 010-1234-5678, 02-9876-5432&quot;
phone_numbers = re.findall(r'01[016789]-\d{4}-\d{4}', text)
# ['010-1234-5678']&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정규 표현식은 한 줄로 복잡한 패턴을 정의하고 찾을 수 있어요. 특히 여러 형식이 섞여 있는 비정형 텍스트에서 특정 패턴을 찾을 때 그 진가가 드러나요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'정규 표현식'을 처음에 접했을 때는, 괜히 더 복잡하고 헷갈리게 느껴졌는데...실제로 활용해보면 텍스트 처리 효율을 몇 배로 높여줘서 아주 유용해요. 특히 RAG 시스템처럼 대량읨 텍스트 데이터를 다루는 프로젝트에서는 필수적으로 익혀둬야 하는 기술이라고 생각해요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 이 챌린지도 끝났어요. 2025년도 끝났고...Happy한 일만 가득한 New Year이길 바라봅니다!!! 취준 끝!! 제발~!!!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다들 새해 복 많이 받으세요!!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btOF6p/dJMcaaDWeZR/acwak0FwmUuKKz2PTAkXY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btOF6p/dJMcaaDWeZR/acwak0FwmUuKKz2PTAkXY1/img.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;269&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50.37&quot; data-filename=&quot;blob&quot; style=&quot;width: 49.7833%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btOF6p/dJMcaaDWeZR/acwak0FwmUuKKz2PTAkXY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtOF6p%2FdJMcaaDWeZR%2Facwak0FwmUuKKz2PTAkXY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;512&quot; height=&quot;269&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/I895w/dJMcaaDWeZS/h161WnDvcwINlWyfbOQFeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/I895w/dJMcaaDWeZS/h161WnDvcwINlWyfbOQFeK/img.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;273&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;49.63&quot; data-filename=&quot;blob&quot; style=&quot;width: 49.0539%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/I895w/dJMcaaDWeZS/h161WnDvcwINlWyfbOQFeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FI895w%2FdJMcaaDWeZS%2Fh161WnDvcwINlWyfbOQFeK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;512&quot; height=&quot;273&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lLuzr/dJMcahwijVr/MeI9g5g6QE6n7wIxNQIcv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lLuzr/dJMcahwijVr/MeI9g5g6QE6n7wIxNQIcv0/img.png&quot; data-origin-width=&quot;904&quot; data-origin-height=&quot;461&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;82.84&quot; data-filename=&quot;blob&quot; style=&quot;width: 81.874%; margin-right: 10px; margin-top: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lLuzr/dJMcahwijVr/MeI9g5g6QE6n7wIxNQIcv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlLuzr%2FdJMcahwijVr%2FMeI9g5g6QE6n7wIxNQIcv0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;904&quot; height=&quot;461&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/clxY3V/dJMcahJP8d3/YVbrXuHrm7pZPdUV3qXack/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/clxY3V/dJMcahJP8d3/YVbrXuHrm7pZPdUV3qXack/img.png&quot; data-origin-width=&quot;388&quot; data-origin-height=&quot;955&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;17.16&quot; style=&quot;width: 16.9632%; margin-top: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/clxY3V/dJMcahJP8d3/YVbrXuHrm7pZPdUV3qXack/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FclxY3V%2FdJMcahJP8d3%2FYVbrXuHrm7pZPdUV3qXack%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;388&quot; height=&quot;955&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;figure id=&quot;og_1763369786484&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스&quot; data-og-description=&quot;성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.&quot; data-og-host=&quot;fastcampus.co.kr&quot; data-og-source-url=&quot;https://fastcampus.info/4oKQD6b&quot; data-og-url=&quot;https://fastcampus.co.kr&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/by3hF3/hyZNN7BBpX/lk1dz6pIZOD0BeTnnxAa7k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/8qdE4/hyZNWcoQHA/v0MkKJiILLKMfxtPwEKDWk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/ck0yeT/hyZNNs0x5b/yiZjKaKZrqvrckFvkD0J21/img.png?width=3654&amp;amp;height=1350&amp;amp;face=0_0_3654_1350&quot;&gt;&lt;a href=&quot;https://fastcampus.info/4oKQD6b&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://fastcampus.info/4oKQD6b&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/by3hF3/hyZNN7BBpX/lk1dz6pIZOD0BeTnnxAa7k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/8qdE4/hyZNWcoQHA/v0MkKJiILLKMfxtPwEKDWk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/ck0yeT/hyZNNs0x5b/yiZjKaKZrqvrckFvkD0J21/img.png?width=3654&amp;amp;height=1350&amp;amp;face=0_0_3654_1350');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;fastcampus.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>RAG</category>
      <category>습관챌린지</category>
      <category>습관형성</category>
      <category>직장인자기계발</category>
      <category>패스트캠퍼스</category>
      <category>패스트캠퍼스후기</category>
      <category>환급챌린지</category>
      <author>Sssadie</author>
      <guid isPermaLink="true">https://sssadie.tistory.com/54</guid>
      <comments>https://sssadie.tistory.com/54#entry54comment</comments>
      <pubDate>Wed, 31 Dec 2025 22:23:32 +0900</pubDate>
    </item>
    <item>
      <title>패스트캠퍼스 환급챌린지 49일차 : 테디노트의 RAG 비법노트 강의 후기</title>
      <link>https://sssadie.tistory.com/53</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: center;&quot;&gt;본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #222222; text-align: center;&quot;&gt;작성하였습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;알고리즘&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;알고리즘이란?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;알고리즘&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;어떤 문제를 해결하거나 계산 시 수행되는 명확한 명령문의 나열&lt;/li&gt;
&lt;li&gt;'초기값'이 주어지고, 유한한 시행횟수를 거쳐 '출력'을 생성한 다음 종료&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;알고리즘의 특징&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;입력과 출력&lt;br /&gt;- 입력값을 받고, 결과를 출력&lt;br /&gt;- 입력 데이터에 성능 비례&lt;/li&gt;
&lt;li&gt;유한성&lt;br /&gt;- 유한한 단계로 실행됨&lt;br /&gt;- 무한루프에 빠져선 안됨&lt;/li&gt;
&lt;li&gt;정확성&lt;br /&gt;- 입력값에 대한 정확한 결과&lt;br /&gt;- 원하는 목표의 달성&lt;/li&gt;
&lt;li&gt;효율성&lt;br /&gt;- 가능한 빠르고, 공간 효율적&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;알고리즘을 공부해야 하는 이유&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문제 해결 능력&lt;/li&gt;
&lt;li&gt;효율적인 프로그래밍&lt;/li&gt;
&lt;li&gt;문제 예측과 예방&lt;/li&gt;
&lt;li&gt;프로그래밍 언어 이해&lt;/li&gt;
&lt;li&gt;면접과 채용&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;알고리즘의 성능 : 복잡도&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;시간 복잡도&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;특정 알고리즘이 실행되는 데에 필요한 연산 시간의 총량&lt;/li&gt;
&lt;li&gt;big-O 표기법으로 표현 됨(최악의 경우로 측정)&lt;/li&gt;
&lt;li&gt;n은 입력의 크기&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;공간 복잡도&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;알고리즘, 프로그램을 수행하는데 필요한 메모리 공간의 총량&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;복잡도 - O(n)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;입력 크기에 비례하여 선형적으로 시간/공간 복잡도가 증가&lt;/li&gt;
&lt;li&gt;최악의 경우, 입력된 데이터를 모두 순회해야 함&lt;/li&gt;
&lt;li&gt;일반적인 배열에서 데이터 찾기&lt;/li&gt;
&lt;li&gt;동일한 배열 복사하기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1767093352633&quot; class=&quot;scala&quot; data-ke-language=&quot;scala&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#O(n) 시간 복잡도의 알고리즘 예시 : 리스트의 모든 요소 출력
def print_list_elements(lst):
    for element in lst:
    	print(element, end=&quot; &quot;)
    print()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;복잡도 - O( n&amp;sup2; )&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;입력 크기의 제곱에 비례하여 시간/공간 복잡도가 증가&lt;/li&gt;
&lt;li&gt;데이터셋이 커질수록 불리해짐&lt;/li&gt;
&lt;li&gt;중첩된 반복문을 사용하여 정렬하는 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1767093675594&quot; class=&quot;scala&quot; data-ke-language=&quot;scala&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#이차원 배열 표현
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

#O(n^2) 시간 복잡도의 알고리즘 예시 : 모든 원소 출력
def print_matrix_elements(matrix):
    for row in matrix:
    	for element in row:
        	print(element, end=&quot; &quot;)
    print()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;복잡도 - O(logn)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;입력 크기에 따라 로그 형태로 시간/공간 복잡도가 증가&lt;/li&gt;
&lt;li&gt;큰 데이터셋에서 빠른 처리가 필요한 경우 선호됨&lt;/li&gt;
&lt;li&gt;이진 트리 검색 등&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1767093862611&quot; class=&quot;scala&quot; data-ke-language=&quot;scala&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def binary_search(arr, target):
    low, high = 0, len(arr) - 1
    
    while low &amp;lt;= high:
        mid = (low + high) // 2
        mid_value = arr[mid]
        
        if mid_value == target:
            return mid  #찾은 경우 해당 인덱스 반환
        elif mid_value &amp;lt; target:
            low = mid + 1  #중간 값이 목표보다 작으면 오른쪽 반으로 탐색
        else:
            high = mid - 1 #중간 값이 목표보다 크면 왼쪽 반으로 탐색
            
    return -1 #목표값이 배열에 없는 경우&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;알고리즘의 시간 복잡도와 공간 복잡도 내용은 이전에도 정리했는데, Python 기본 강의에서 한번 더 정리할 기회가 생겼네요. 다시 정리해볼게요!!&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;알고리즘의 시간 복잡도와 공간 복잡도를 배우다 보면, 처음에는 단순히 '얼마나 빠른가'를 측정하는 지표로만 느껴졌어요. 하지만 실제로 프로그램을 작성하다보면 이 개념들이 단순히 성능 지표만을 의미하는 것이 아니라, 프로그램 설계의 방향성 자체를 결정하는 중요한 기준이 된다는걸 깨달을 수 있죠. 특히 데이터의 크기가 작을 때는 어떤 알고리즘을 사용하든 큰 차이가 없어 보여요. 100개의 데이터를 정리할 때 O(n)과 O(n&amp;sup2;)의 차이는 체감하기 어렵죠. 하지만 데이터가 10,000개, 100,000개로 늘어나면 상황이 완전이 달라집니다. O(n) 알고리즘은 선형적으로 증가하지만, O(n&amp;sup2;) 알고리즘은 기하급수적으로 느려지거든요.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;이런 복잡도 개념이 RAG 시스템과 어떻게 연결될지 알아봤는데, 아주 필요한 개념이더라고요. RAG는 수천, 수만 개의 청크(Chunk) 단위로 분할된 문서에서 질문과 가장 관련도가 높은 정보를 빠르게 찾아내야 하죠. 만약 O(n&amp;sup2;) 복잡도의 검색 알고리즘을 사용한다면, 실시간 응답은 힘들다고 할 수 있죠. 그래서 벡터 데이터베이스는 O(log n)에 가까운, 근사 최근접 이웃 탐색(ANN) 알고리즘을 사용한다고 합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;결국 좋은 알고리즘을 선택한다는 것은 단순히 빠른 코드를 작성하는 것이 아니라, 확장 가능한 시스템을 설계하는 것이라 이해했어요. 사용자가 10명일 때는 문제없던 시스템이 1000명, 10,000명이 되었을 때에도 안정적으로 작동할 수 있도록 미리 설계하는거죠.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;이제 이 챌린지의 끝이 보이네요. 내일이면 마지막이에요. 25년의 끝이자, 챌린지의 끝. 이렇게 또 1년이 지나가네요. 다들 고생 많으셨어요. 올해를 끝으로 취준 생활도 끝맺음 하고싶어요!! 2026년에는 취뽀를 기원하며...&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cRa7xr/dJMcaiu9EIU/RZ0r9K1jJxrKVBY6mjNpN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cRa7xr/dJMcaiu9EIU/RZ0r9K1jJxrKVBY6mjNpN0/img.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;222&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50.11&quot; data-filename=&quot;blob&quot; style=&quot;width: 49.5297%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cRa7xr/dJMcaiu9EIU/RZ0r9K1jJxrKVBY6mjNpN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcRa7xr%2FdJMcaiu9EIU%2FRZ0r9K1jJxrKVBY6mjNpN0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;512&quot; height=&quot;222&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EioHv/dJMcaiu9EIV/ugakht73IQEE6TxIwu0QT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EioHv/dJMcaiu9EIV/ugakht73IQEE6TxIwu0QT1/img.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;223&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;49.89&quot; data-filename=&quot;blob&quot; style=&quot;width: 49.3076%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EioHv/dJMcaiu9EIV/ugakht73IQEE6TxIwu0QT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEioHv%2FdJMcaiu9EIV%2Fugakht73IQEE6TxIwu0QT1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;512&quot; height=&quot;223&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhXWzG/dJMcaiu9EIW/9TijKJl1keoW1N6asnPHHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhXWzG/dJMcaiu9EIW/9TijKJl1keoW1N6asnPHHk/img.png&quot; data-origin-width=&quot;958&quot; data-origin-height=&quot;459&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;83.74&quot; data-filename=&quot;blob&quot; style=&quot;width: 82.7682%; margin-right: 10px; margin-top: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhXWzG/dJMcaiu9EIW/9TijKJl1keoW1N6asnPHHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhXWzG%2FdJMcaiu9EIW%2F9TijKJl1keoW1N6asnPHHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;958&quot; height=&quot;459&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b69ZfD/dJMcagYrtFj/V4q3gHcA7AhHRYG19lR4j1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b69ZfD/dJMcagYrtFj/V4q3gHcA7AhHRYG19lR4j1/img.png&quot; data-origin-width=&quot;389&quot; data-origin-height=&quot;960&quot; data-is-animation=&quot;false&quot; style=&quot;width: 16.069%; margin-top: 10px;&quot; data-widthpercent=&quot;16.26&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b69ZfD/dJMcagYrtFj/V4q3gHcA7AhHRYG19lR4j1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb69ZfD%2FdJMcagYrtFj%2FV4q3gHcA7AhHRYG19lR4j1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;389&quot; height=&quot;960&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1763369786484&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스&quot; data-og-description=&quot;성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.&quot; data-og-host=&quot;fastcampus.co.kr&quot; data-og-source-url=&quot;https://fastcampus.info/4oKQD6b&quot; data-og-url=&quot;https://fastcampus.co.kr&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/by3hF3/hyZNN7BBpX/lk1dz6pIZOD0BeTnnxAa7k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/8qdE4/hyZNWcoQHA/v0MkKJiILLKMfxtPwEKDWk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/ck0yeT/hyZNNs0x5b/yiZjKaKZrqvrckFvkD0J21/img.png?width=3654&amp;amp;height=1350&amp;amp;face=0_0_3654_1350&quot;&gt;&lt;a href=&quot;https://fastcampus.info/4oKQD6b&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://fastcampus.info/4oKQD6b&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/by3hF3/hyZNN7BBpX/lk1dz6pIZOD0BeTnnxAa7k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/8qdE4/hyZNWcoQHA/v0MkKJiILLKMfxtPwEKDWk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/ck0yeT/hyZNNs0x5b/yiZjKaKZrqvrckFvkD0J21/img.png?width=3654&amp;amp;height=1350&amp;amp;face=0_0_3654_1350');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;fastcampus.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>RAG</category>
      <category>습관챌린지</category>
      <category>습관형성</category>
      <category>직장인자기계발</category>
      <category>패스트캠퍼스</category>
      <category>패스트캠퍼스후기</category>
      <category>환급챌린지</category>
      <author>Sssadie</author>
      <guid isPermaLink="true">https://sssadie.tistory.com/53</guid>
      <comments>https://sssadie.tistory.com/53#entry53comment</comments>
      <pubDate>Tue, 30 Dec 2025 21:43:19 +0900</pubDate>
    </item>
    <item>
      <title>패스트캠퍼스 환급챌린지 48일차 : 테디노트의 RAG 비법노트 강의 후기</title>
      <link>https://sssadie.tistory.com/52</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: center;&quot;&gt;본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #222222; text-align: center;&quot;&gt;작성하였습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;멤버 변수&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;객체가 가지는속성(Attribute) 또는값(Value,Data)&lt;/li&gt;
&lt;li&gt;멤버 변수로의 접근 : Obj.variable&lt;/li&gt;
&lt;li&gt;인스턴스 내부에서 접근할 때에는, self.variable&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;멤버 변수의 초기화 : 생성자&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;생성자를 통한 초기화&lt;br /&gt;- 생성 시 넘겨받은 파라밑어를 활용하여 초기화&lt;br /&gt;ex) self.name = name&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 38px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style3&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 21px; text-align: center;&quot;&gt;멤버변수&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 21px; text-align: center;&quot;&gt;지역변수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;- 객체에 속함&lt;br /&gt;- self.variable&lt;br /&gt;- 객체가 살아있는 동안 유지&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;- 메소드 내부에서만 사용&lt;br /&gt;- 메소드 종료시 사라짐&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;생성자(Constructor)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클래스를 통해 인스턴스를 생성할 때, 반드시 실행되는 메소드&lt;/li&gt;
&lt;li&gt;__init__() 이라는이름으로 예약되어 있음&lt;/li&gt;
&lt;li&gt;생성자의 첫 번째 매개변수는 항상 'self'&lt;br /&gt;- self는 생성자에 의해 초기화 된 인스턴스를 의미&lt;br /&gt;- 클래스의 다른 메소드에서 인스턴스 변수 및 속성에 접근할 때 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;생성자 사용하기&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;생성자는 객체를 사용하는 시점에 자동으로 호출됨.&lt;/li&gt;
&lt;li&gt;객체 바깥에서 초기화되지 않은 멤버 변수에 대한 접근을 시도할 경우 Attribute Error 발생.&lt;br /&gt;&amp;rarr; Attribute Error는 단순 에러가 아닌, '이 객체는 그런 책임/속성을 가지지 않는다'는 명확한 신호를 의미함&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1766994415231&quot; class=&quot;scala&quot; data-ke-language=&quot;scala&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Person:
    def hello(self):
    print(&quot;Hello! I'm &quot; + self.name)
    
    def __init__(self, name, age):   #__init__ : 생성자 메소드
    	self.name = name
        self.age = age
        
man = Person(&quot;Robert&quot;, 30)
man.hello()  #Hello! I'm Robert

print(f&quot;{man.name}: {man.age}세&quot;)  #Robert : 30세
print(f&quot;{man.job}&quot;)  #Attribute Error : 정의되지 않은 속성&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;메소드(Method)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클래스의 객체(인스턴스)에 대해 수행하는 동작을 정의하는 함수&lt;/li&gt;
&lt;li&gt;클래스 내에 함수 형태로 정의됨&lt;/li&gt;
&lt;li&gt;첫 번째 매개변수는 반드시 'self'&lt;br /&gt;- self를 이용하여 객체의 속성 및 다른 메소드에 접근 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;메소드 활용하기&lt;/h4&gt;
&lt;pre id=&quot;code_1766995133002&quot; class=&quot;scala&quot; data-ke-language=&quot;scala&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Person:
    def __init__(self, name, age):
    	self.name = name
        self.age = age
        
    def hello(self):
    	print(&quot;Hello! I'm &quot; + self.name)
        
    def update_age(self, new_age):
    	if new_age &amp;gt; 0:
        	self.age = new_age
            print(f&quot;I'm {self.age} years old now!&quot;)
        else:
        	raise ValueError(&quot;나이는 0살보다 어릴 수 없습니다.&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;객체와 멤버 변수의 생명주기&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;객체가 초기화될 때, 객체와 멤버 변수가 생성됨&lt;/li&gt;
&lt;li&gt;멤버 변수는 객체가 존재하는 동안 메모리에 상주&lt;/li&gt;
&lt;li&gt;객체는 더 이상 필요하지 않거나, 삭제하는 경우 파괴됨&lt;br /&gt;- 일반 변수와 동일한 유효 범위(Scope)를 가짐&lt;/li&gt;
&lt;li&gt;멤버 변수는 객체가 파괴되면 함께 파괴됨&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;객체지향 프로그래밍을 배우다보면, 가장 많이 등장하는 단어가 바로 '클래스', '객체', '멤버 변수' 예요. 처음에는 각각 따로 이해되는 개념처럼 보이지만, 실제로는 이 세 가지가 유기적으로 맞물려 하나의 구조를 이루죠. 오늘은 이 개념들이 서로 어떤 상호작용을 하고, 왜 중요한지 정리해볼게요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;먼저 클래스(Class)는 객체를 만들기 위한 설계도예요. 어떤 속성을 가지고, 어떤 기능을 수행할 수 있는지를 정의한 개념의 틀이라고 볼 수 있죠. 클래스 자체는 아직 실체가 없는 상태이며, 단지 어떤 형태의 객체를 만들겠다는 약속에 가깝죠. 즉, 클래스는 가능성의 집합이라고 할 수 있어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;이 클래스라는 설계도를 기반으로 실제로 생성된 것이 객체(Object), 또는 인스턴스죠. 객체는 클래스에서 정의된 구조를 그대로 따르되, 각자 고유한 상태를 가져요. 같은 클래스로부터 여러 객체를 만들 수 있지만, 각각은 서로 다른 값을 가질 수 있고 독립적으로 동작하죠. 이 지점에서 객체는 단순한 코드 덩어리가 아니라, 프로그램 안에서 하나의 실체로 존재하게 되는 겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;객체의 상태를 구체적으로 표현하는 것이 바로 멤버변수! 멤버 변수는 객체가 가지고 있는 속성으로, 객체가 지금 어떤 상태인지를 나타내요. 예를 들어 사람 객체라면 이름, 나이 같은 정보가 멤버 변수가 되죠. 이 멤버 변수들은 클래스에서 정의된 틀을 따르지만, 실제 값은 객체마다 다르게 설정됩니다. 즉, 클래스는 구조를 정의하고, 객체는 그 구조에 값을 채우며, 멤버 변수는 객체의 상태를 완성하는거죠. 이 세 가지의 상호작용에서 중요한 점은 역할의 분리에요. 클래스는 '무엇을 가질 수 있는가'를 정의하고, 객체는 '지금 무엇을 가지고 있는가'를 표현하죠. 멤버 변수는 그 사이에서 객체의 현재 상태를 저장하는 역할을 맡아요. 이 구조 덕분에 한 객체의 상태 변화가 다른 객체에 영향을 주지 않으면서도, 공통된 행동은 클래스 단위에서 일관되게 관리할 수 있답니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 개념들이 중요한 이유는, 프로그램이 커질수록 상태 관리와 책임 분리가 핵심 문제가 되기 때문이에요. 객체지향 프로그래밍에서는 데이터를 아무 곳에서나 수정하지 않고, 해당 데이터를 소유한 객체를 통해서만 변경하도록 설계하기 때문에, 코드의 안정성을 높이고 버그를 줄이면서 유지보수를 훨씬 수월하게 만들 수 있어요. 앞으로 더 복잡한 시스템을 다루게 되더라도, 이 기본 구조를 기준으로 생각하면 코드를 새로 짜거나 코드를 보고 해석할 때 방향을 잃지 않을 수 있을 것 같아요!!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9aSUl/dJMcahpwXbJ/R4siIDuDHcYKgrEXD1xmP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9aSUl/dJMcahpwXbJ/R4siIDuDHcYKgrEXD1xmP1/img.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;228&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;48.42&quot; data-filename=&quot;blob&quot; style=&quot;width: 47.8533%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9aSUl/dJMcahpwXbJ/R4siIDuDHcYKgrEXD1xmP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9aSUl%2FdJMcahpwXbJ%2FR4siIDuDHcYKgrEXD1xmP1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;512&quot; height=&quot;228&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Eis1Q/dJMcacIwyeg/DB1oWgM883Jt41zCLoxQck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Eis1Q/dJMcacIwyeg/DB1oWgM883Jt41zCLoxQck/img.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;214&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;51.58&quot; data-filename=&quot;blob&quot; style=&quot;width: 50.9839%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Eis1Q/dJMcacIwyeg/DB1oWgM883Jt41zCLoxQck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEis1Q%2FdJMcacIwyeg%2FDB1oWgM883Jt41zCLoxQck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;512&quot; height=&quot;214&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbbGWy/dJMcacIwyej/05DOQVJXS75KrkpRvhPFU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbbGWy/dJMcacIwyej/05DOQVJXS75KrkpRvhPFU1/img.png&quot; data-origin-width=&quot;958&quot; data-origin-height=&quot;483&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;83.17&quot; data-filename=&quot;blob&quot; style=&quot;width: 82.1995%; margin-right: 10px; margin-top: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbbGWy/dJMcacIwyej/05DOQVJXS75KrkpRvhPFU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbbGWy%2FdJMcacIwyej%2F05DOQVJXS75KrkpRvhPFU1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;958&quot; height=&quot;483&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cMoV3H/dJMcaaDVoJd/BoleKmgtAGxsCjXugyx0jk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cMoV3H/dJMcaaDVoJd/BoleKmgtAGxsCjXugyx0jk/img.png&quot; data-origin-width=&quot;385&quot; data-origin-height=&quot;959&quot; data-is-animation=&quot;false&quot; style=&quot;width: 16.6377%; margin-top: 10px;&quot; data-widthpercent=&quot;16.83&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cMoV3H/dJMcaaDVoJd/BoleKmgtAGxsCjXugyx0jk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMoV3H%2FdJMcaaDVoJd%2FBoleKmgtAGxsCjXugyx0jk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;385&quot; height=&quot;959&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1763369786484&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스&quot; data-og-description=&quot;성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.&quot; data-og-host=&quot;fastcampus.co.kr&quot; data-og-source-url=&quot;https://fastcampus.info/4oKQD6b&quot; data-og-url=&quot;https://fastcampus.co.kr&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/by3hF3/hyZNN7BBpX/lk1dz6pIZOD0BeTnnxAa7k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/8qdE4/hyZNWcoQHA/v0MkKJiILLKMfxtPwEKDWk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/ck0yeT/hyZNNs0x5b/yiZjKaKZrqvrckFvkD0J21/img.png?width=3654&amp;amp;height=1350&amp;amp;face=0_0_3654_1350&quot;&gt;&lt;a href=&quot;https://fastcampus.info/4oKQD6b&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://fastcampus.info/4oKQD6b&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/by3hF3/hyZNN7BBpX/lk1dz6pIZOD0BeTnnxAa7k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/8qdE4/hyZNWcoQHA/v0MkKJiILLKMfxtPwEKDWk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/ck0yeT/hyZNNs0x5b/yiZjKaKZrqvrckFvkD0J21/img.png?width=3654&amp;amp;height=1350&amp;amp;face=0_0_3654_1350');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;fastcampus.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>RAG</category>
      <category>습관챌린지</category>
      <category>습관형성</category>
      <category>직장인자기계발</category>
      <category>패스트캠퍼스</category>
      <category>패스트캠퍼스후기</category>
      <category>환급챌린지</category>
      <author>Sssadie</author>
      <guid isPermaLink="true">https://sssadie.tistory.com/52</guid>
      <comments>https://sssadie.tistory.com/52#entry52comment</comments>
      <pubDate>Mon, 29 Dec 2025 17:30:33 +0900</pubDate>
    </item>
    <item>
      <title>패스트캠퍼스 환급챌린지 47일차 : 테디노트의 RAG 비법노트 강의 후기</title>
      <link>https://sssadie.tistory.com/51</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: center;&quot;&gt;본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #222222; text-align: center;&quot;&gt;작성하였습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;객체지향 프로그래밍&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;객체지향 프로그래밍(Object-oriented Programming)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;'객체' 개념을 기반으로 한 프로그래밍 패러다임&lt;/li&gt;
&lt;li&gt;객체는 속성(필드, 데이터)과 기능(프로시저, 메소드) 으로 구성&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;왜 객체지향 프로그래밍인가?&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인간의 인지 방식과 가장 유사&lt;/li&gt;
&lt;li&gt;실제 세계를 모델링 하는데에 적합&lt;/li&gt;
&lt;li&gt;개념의 정의와 재사용이 자유로움&lt;/li&gt;
&lt;li&gt;유지보수의 용이성&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;객체와 클래스&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;객체(Object)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;변수와 함수, 자료구조의 조합&lt;/li&gt;
&lt;li&gt;현실 세계의 개념, 사물을 프로그램에서 모델링 한 것 또는 추상적인 개념&lt;/li&gt;
&lt;li&gt;속성(데이터)과 기능(동작)을 가짐&lt;/li&gt;
&lt;li&gt;객체는 변수화 할 수 있음 &amp;rarr; 인스턴스&lt;/li&gt;
&lt;li&gt;쇼핑몰에서 판매하는 상품 하나 하나가 객체&lt;/li&gt;
&lt;li&gt;상품 하나마다 별개의 속성을 가짐&lt;/li&gt;
&lt;li&gt;모든 상품이 가지는 속성의 종류는 동일함&lt;/li&gt;
&lt;li&gt;상품마다 수행할 수 있는 기능이 존재&lt;/li&gt;
&lt;li&gt;객체에 정의되지 않은 기능은 할 수 없음(상품에 로그인하기, ...)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size20&quot;&gt;클래스(Class)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;객체를 생성하기 위한 프로그램 코드 템플릿&lt;/li&gt;
&lt;li&gt;객체의 초기 상태값과 기능에 대한 구현을 제공&lt;/li&gt;
&lt;li&gt;객체를 만들기 위한 설계도(개념의 정의)&lt;/li&gt;
&lt;li&gt;객체의 속성과 기능을 정의&lt;/li&gt;
&lt;li&gt;하나의 클래스는 여러 개의 인스턴스를 정의하는 데에 사용됨&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;객체와 클래스&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클래스는 객체를 생성하기 위한 설계도&lt;/li&gt;
&lt;li&gt;클래스로부터 생성된 객체들은 각각 고유한 속성을 가질 수 있음&lt;/li&gt;
&lt;li&gt;한 클래스의 인스턴스에 가해진 변경은 다른 인스턴스에 영향을 미치지 않음&lt;/li&gt;
&lt;li&gt;클래스에 정의된 기능이 변경되면, 해당 클래스 인스턴스의 해당 기능이 변경됨&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1766916980511&quot; class=&quot;scala&quot; data-ke-language=&quot;scala&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Person:
    def hello(self):
    print(&quot;Hello!&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;클래스 정의하기&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;class {class_name} :&amp;nbsp; 로 클래스의 정의 시작&lt;/li&gt;
&lt;li&gt;들여쓰기(indent)로 기존의 코드와 구분&lt;/li&gt;
&lt;li&gt;인스턴스의 기능(메소드) 정의&lt;br /&gt;- 메소드 정의 시 첫 번째 파라미터는 반드시 self&lt;br /&gt;&amp;nbsp; &amp;nbsp;*self : 이 메소드를 호출한 객체 자신을 의미&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;생성자(init)&lt;/h4&gt;
&lt;pre id=&quot;code_1766919261971&quot; class=&quot;scala&quot; data-ke-language=&quot;scala&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Person:
    def __init__(self, name):
        self.name = name&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;객체 생성 시 자동 실행&lt;/li&gt;
&lt;li&gt;객체의 초기 상태 정의&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;객체지향의 4대 특징&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;캡슐화 : 내부 구현 숨기기&lt;/li&gt;
&lt;li&gt;추상화 : 중요한 것만 모델링&lt;/li&gt;
&lt;li&gt;상속 : 기존 클래스 재사용&lt;/li&gt;
&lt;li&gt;다형성 : 같은 이름, 다른 동작&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;함수와 객체지향 사고의 차이를 따져보자면, 함수는 '무엇을 할까?' 라면 객체는 '누가 이 일을 할까?'라고 할 수 있어요. 처음 이 내용을 접했을 때는 막연하게 느껴졌지만, 객체지향을 배우면서 차이가 점점 명확해졌어요. 함수 중심의 사고에서는 문제를 기능 단위로 나눕니다. 입력을 받아 어떤 처리를 하고 결과를 반환하는지가 핵심이죠. 그래서 코드의 흐름은 자연스럽게 작업이 순서 중심으로 구성됩니다. 비교적 단순한 프로그램이나 계산 위주의 로직에서는 함수 중심 구조만으로 충분히 깔끔한 코드를 만들 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;반면, 객체지향 사고에서는 '이 기능을 수행하는 주체는 누구인가?', '이 데이터와 이 동작은 같은 책임을 가지는가?'와 같이 함수에서와는 다른 시선을 갖게 되죠. 즉, 기능을 나열하기보다 역할과 책임을 가진 객체를 정의하는 것이 우선이 됩니다. 그 결과, 코드는 '무엇을 할지'가 아니라 '누가 어떤 책임을 갖고 행동하는지'를 중심으로 구성되죠.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어, 쇼핑몰 시스템을 생각해봅시다. 함수 중심 사고에서는 결제 함수, 상품 조회 함수, 할인 계산 함수처럼 기능 목록을 먼저 떠올리게 되죠. 반면, 객체지향 사고에서는 상품, 사용자, 주문과 같이 객체를 정의하고, 각각이 어떤 행동을 해야 하는지를 고민하게 됩니다. 결제는 '결제함수'가 하는 일이 아니라, '주문 객체'가 수행해야 할 책임이 되는 겁니다. 이 차이는 프로그램 규모가 커질수록 더욱 크게 드러납니다. 기능 중심으로만 코드를 확장하다보면, 서로 얽힌 함수들이 늘어나고 점점 수정이 어려워지죠. 반대로 객체지향 구조에서는 책임이 명확하게 분리되어 있기 때문에, 변경 사항이 발생해도 영향을 받는 부분을 비교적 쉽게 예측할 수 있어요. 유지보수와 확장성 측면에서 객체지향이 강점을 갖는 이유도 여기에 있다고 생각해요.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;함수, 모듈, 객체지향 등등 들어는 봤지만 제대로 정리하는건 처음인 것 같아요. 머릿속에서 뒤죽박죽 헷갈리지 않도록 잘 정리하고 기억해둬야겠어요. 분명 배웠던 내용들인데 시간 지나고 들으면 또 새로운 이 상황....다신 마주하고 싶지 않네요. 명확한 기억으로 남겨두고 코드 짤 때 활용해야겠어요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpGfZm/dJMcadN7v7f/3R22ADdk1weg0eoMMlCEIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpGfZm/dJMcadN7v7f/3R22ADdk1weg0eoMMlCEIK/img.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;223&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;51.1&quot; data-filename=&quot;blob&quot; style=&quot;width: 50.5023%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpGfZm/dJMcadN7v7f/3R22ADdk1weg0eoMMlCEIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpGfZm%2FdJMcadN7v7f%2F3R22ADdk1weg0eoMMlCEIK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;512&quot; height=&quot;223&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AgdiO/dJMcai2X74W/IYZ5wb9IdrM3X1M9iaMOLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AgdiO/dJMcai2X74W/IYZ5wb9IdrM3X1M9iaMOLk/img.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;233&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;48.9&quot; data-filename=&quot;blob&quot; style=&quot;width: 48.3349%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AgdiO/dJMcai2X74W/IYZ5wb9IdrM3X1M9iaMOLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAgdiO%2FdJMcai2X74W%2FIYZ5wb9IdrM3X1M9iaMOLk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;512&quot; height=&quot;233&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEB4mk/dJMcadN7v7g/5lSxZhKUf07kOG2HEZk6T0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEB4mk/dJMcadN7v7g/5lSxZhKUf07kOG2HEZk6T0/img.png&quot; data-origin-width=&quot;958&quot; data-origin-height=&quot;469&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;83.45&quot; data-filename=&quot;blob&quot; style=&quot;width: 82.4827%; margin-right: 10px; margin-top: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEB4mk/dJMcadN7v7g/5lSxZhKUf07kOG2HEZk6T0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEB4mk%2FdJMcadN7v7g%2F5lSxZhKUf07kOG2HEZk6T0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;958&quot; height=&quot;469&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5bUvy/dJMcafeayh4/aMdaMLVA6DeG2MKTTn9gO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5bUvy/dJMcafeayh4/aMdaMLVA6DeG2MKTTn9gO0/img.png&quot; data-origin-width=&quot;388&quot; data-origin-height=&quot;958&quot; data-is-animation=&quot;false&quot; style=&quot;width: 16.3545%; margin-top: 10px;&quot; data-widthpercent=&quot;16.55&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5bUvy/dJMcafeayh4/aMdaMLVA6DeG2MKTTn9gO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5bUvy%2FdJMcafeayh4%2FaMdaMLVA6DeG2MKTTn9gO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;388&quot; height=&quot;958&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1763369786484&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스&quot; data-og-description=&quot;성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.&quot; data-og-host=&quot;fastcampus.co.kr&quot; data-og-source-url=&quot;https://fastcampus.info/4oKQD6b&quot; data-og-url=&quot;https://fastcampus.co.kr&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/by3hF3/hyZNN7BBpX/lk1dz6pIZOD0BeTnnxAa7k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/8qdE4/hyZNWcoQHA/v0MkKJiILLKMfxtPwEKDWk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/ck0yeT/hyZNNs0x5b/yiZjKaKZrqvrckFvkD0J21/img.png?width=3654&amp;amp;height=1350&amp;amp;face=0_0_3654_1350&quot;&gt;&lt;a href=&quot;https://fastcampus.info/4oKQD6b&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://fastcampus.info/4oKQD6b&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/by3hF3/hyZNN7BBpX/lk1dz6pIZOD0BeTnnxAa7k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/8qdE4/hyZNWcoQHA/v0MkKJiILLKMfxtPwEKDWk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/ck0yeT/hyZNNs0x5b/yiZjKaKZrqvrckFvkD0J21/img.png?width=3654&amp;amp;height=1350&amp;amp;face=0_0_3654_1350');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;fastcampus.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>RAG</category>
      <category>습관챌린지</category>
      <category>습관형성</category>
      <category>직장인자기계발</category>
      <category>패스트캠퍼스</category>
      <category>패스트캠퍼스후기</category>
      <category>환급챌린지</category>
      <author>Sssadie</author>
      <guid isPermaLink="true">https://sssadie.tistory.com/51</guid>
      <comments>https://sssadie.tistory.com/51#entry51comment</comments>
      <pubDate>Sun, 28 Dec 2025 20:27:12 +0900</pubDate>
    </item>
    <item>
      <title>패스트캠퍼스 환급챌린지 46일차 : 테디노트의 RAG 비법노트 강의 후기</title>
      <link>https://sssadie.tistory.com/50</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: center;&quot;&gt;본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #222222; text-align: center;&quot;&gt;작성하였습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;모듈과 패키지&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;모듈이란?&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파이썬 정의와 문장을 담고 있는 .py 파일&lt;/li&gt;
&lt;li&gt;함수, 변수, 클래스 등을 포함&lt;/li&gt;
&lt;li&gt;모듈을 통해 코드를 구조화하고, 유지보수하기 용이해짐&lt;/li&gt;
&lt;li&gt;작성된 모듈은 다른 프로그램에서 재사용 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;모듈 사용하기&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모듈 생성하기 : .py 파일에 정의&lt;/li&gt;
&lt;li&gt;모듈을 다른 프로그램에서 가져와 사용하기&lt;br /&gt;- import '모듈명'&lt;br /&gt;- 모듈 내에서 다른 모듈을 가져오는 것 또한 가능&lt;/li&gt;
&lt;li&gt;모듈의 이름 :__name__으로 참조 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;모듈 가져오기 - 지역 네임스페이스(.Namespace)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모듈을 지역 네임스페이스로 가져오기&lt;br /&gt;- from '모듈명' import '개체명', '개체명2'&lt;br /&gt;&amp;rarr; 이렇게 가져올 경우, 해당 개체 이름을 바로 사용할 수 있음&lt;br /&gt;- from '모듈명' import*&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;rarr; 모듈 내의 모든 개체를 import 해올 수 있음 (_로 시작하는 것 제외)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;rarr; 의도와 다르게 모듈 내 모든 정보를 가져오기 때문에, 가급적 사용하지 말 것&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;모듈 활용하기&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;'모듈'로서 코드와, '메일 프로그램'으로서 코드를 어떻게 구분할 수 있을까?&lt;br /&gt;- if__name__== &quot;__main__&quot;:&lt;br /&gt;- 파이썬 인터프리터로 실행한 파일은 모듈명이 '__main__'으로 고정됨&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[import 방식에 따른 차이 예시]&lt;/p&gt;
&lt;pre id=&quot;code_1766763788766&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#출처 명확
import math
math.sqrt(4)

#간결하지만 충돌 위험
from math import sqrt
sqrt(4)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rArr; 협업&amp;middot;대규모 프로젝트에서는 첫 번째 방식 선호&lt;/p&gt;
&lt;h4 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size20&quot;&gt;패키지란?&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모듈의 계층구조를 만드는 방법&lt;/li&gt;
&lt;li&gt;모듈을 계층화하고, 모듈을 포함하는 디렉토리의 집합&lt;/li&gt;
&lt;li&gt;디렉토리 구조를 활용하여 연관성 있는 모듈을 그룹화하고 정리할 수 있음&lt;/li&gt;
&lt;li&gt;코드의 구조화와 재사용을 용이하게 만들며, 대규모 프로젝트에 필수적으로 사용됨&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;패키지의 구성&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;디렉토리 패키지 아래에 모듈들이 구성&lt;/li&gt;
&lt;li&gt;서브패키지는 디렉토리 계층구조로 정의&lt;/li&gt;
&lt;li&gt;패키지 바깥에서 모듈 임포트하기 : import package.module&lt;br /&gt;&amp;rarr; 실제 모듈을 활용 시 : package.module.function()&lt;/li&gt;
&lt;li&gt;별칭 이용하기 : import package.module as alias&lt;br /&gt;&amp;rarr; alias.function()&lt;/li&gt;
&lt;li&gt;패키지 내의 모든 모듈 임포트하기 : from package import*&lt;br /&gt;&amp;rarr; 허용된 모듈만 import 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;패키지 초기화&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;__init__.py&lt;br /&gt;&amp;rarr; 이 디렉토리가 파이썬 패키지임을 알려주는 파일&lt;br /&gt;&amp;rarr; 패키지 수준에서 사용되는 변수, 함수, 또는 초기화 로직이 정의됨&lt;br /&gt;&amp;rarr; 하위 모듈을 미리 로드하거나, 전역변수를 정의하는 등&lt;br /&gt;&amp;rarr; __all__ 을 활용하여, 참조하게 만들 모듈만 선택 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;패키지 설계의 핵심&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;기능 기준으로 묶기 (데이터 흐름 기준으로 묶기 아님!!)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[예시]&lt;/p&gt;
&lt;pre id=&quot;code_1766763922987&quot; class=&quot;scala&quot; data-ke-language=&quot;scala&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;rag/
 ├─ loaders/
 ├─ retrievers/
 ├─ prompts/
 └─ utils/&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모듈과 패키지는 '코드를 정리하는 단계'라고 할 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;함수 : 로직 단위&lt;/li&gt;
&lt;li&gt;모듈(.py) : 기능 단위&lt;/li&gt;
&lt;li&gt;패키지(디렉토리) : 도메인 단위&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;오늘은 파이썬에서 코드 구조화를 담당하는 핵심 개념인 모듈과 패키지에 대해 학습했어요. 모듈과 패키지는 코드를 나누는 방법이 아니라, 생각을 정리하는 방법이라는걸 깨달을 수 있는 수업이었죠. 함수가 하나의 작업 단위를 묶는 도구라면, 모듈과 패키지는 그 함수들을 어떻게 정리하고 관리할 것인가에 대한 해답이라고 이해했어요.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;모듈은 파이썬 정의와 문장을 담고 있는 하나의 .py 파일로, 함수, 변수, 클래스 등을 포함할 수 있다고 합니다. 코드를 기능 단위로 분리해 재사용성과 유지보수성을 높여주죠. 한 번 작성한 모듈은 다른 프로그램에서도 그대로 가져다 쓸 수 있기 때문에, 중복 코드를 줄일 수 있어 매우 효율적이라고 할 수 있어요.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;import 모듈명&lt;/span&gt; 형태로 가져와 쓸 수 있고, &lt;span style=&quot;background-color: #dddddd;&quot;&gt;from 모듈명 import 개체명 &lt;/span&gt;처럼 특정 함수나 변수만 불러올 수도 있어요. 다만, &lt;span style=&quot;background-color: #dddddd;&quot;&gt;from 모듈명 import *&lt;/span&gt;&amp;nbsp;형태는 의도치 않게 모든 개체를 가져올 수 있어 충돌 위험이 있죠. 가급적 사용하지 않는 것이 좋다고 하네요. 또한, 각 모듈은 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;__name__&lt;/span&gt; 이라는 내장 변수를 가지고, 이를 통해 해당 파일이 직접 실행된 것인지 아니면 import 된 것인지를 구분할 수 있습니다.&lt;span style=&quot;background-color: #dddddd;&quot;&gt;if__name__ == &quot;__main__&quot;:&lt;/span&gt; 구문은 이 차이를 활용해서 실행 코드와 모듈 코드를 분리할 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;패키지는 이러한 모듈들을 계층 구조로 묶는 방법을 말합니다. 여러 개의 모듈을 하나의 디렉토리로 묶고, 관련 기능끼리 그룹화함으로써 대규모 프로젝트에서도 코드 구조를 체계적으로 유지할 수 있죠. 패키지 안에는 서브패키지를 둘 수도 있고, 이는 디렉토리 구조로 자연스럽게 표현됩니다. 패키지에는 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;__init__.py&lt;/span&gt; 파일이 포함될 수 있으며, 이는 해당 디렉토리가 파이썬 패키지임을 알리는 역할을 합니다. 이처럼 패키지는 단순한 폴더를 의미하는 것이 아니라, 하나의 명확한 인터페이스를 가진 구성 요소가 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;오늘 학습은 모듈과 패키지를 통해 구조화 방법을 배운 것 같아요. 단순히 파일을 나누는 기술 뿐만 아니라 프로그램의 구조와 사고를 정리하는 방법을 알 수 있었죠. 코드를 작성하다보면 제가 썼어도 '뭐가 어디에 있더라?'하면서 찾기 일쑤였는데, 앞으로는 '어디에 무엇을 어떤 형태로 둘 것인가'를 고민해서 개발자로서 실력을 키워야겠어요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cW9k2Y/dJMcaajBROk/DYBWwuEyWgQ6qO6jNI80B1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cW9k2Y/dJMcaajBROk/DYBWwuEyWgQ6qO6jNI80B1/img.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;271&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;52.79&quot; data-filename=&quot;blob&quot; style=&quot;width: 52.1736%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cW9k2Y/dJMcaajBROk/DYBWwuEyWgQ6qO6jNI80B1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcW9k2Y%2FdJMcaajBROk%2FDYBWwuEyWgQ6qO6jNI80B1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;512&quot; height=&quot;271&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NwO3r/dJMcadghXUJ/jx9RofKdijkZKXs8eMotIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NwO3r/dJMcadghXUJ/jx9RofKdijkZKXs8eMotIK/img.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;303&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;47.21&quot; data-filename=&quot;blob&quot; style=&quot;width: 46.6636%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NwO3r/dJMcadghXUJ/jx9RofKdijkZKXs8eMotIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNwO3r%2FdJMcadghXUJ%2Fjx9RofKdijkZKXs8eMotIK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;512&quot; height=&quot;303&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9YHRv/dJMcad1Ekyf/ZSjQi4hJUD73oMTPjprWvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9YHRv/dJMcad1Ekyf/ZSjQi4hJUD73oMTPjprWvK/img.png&quot; data-origin-width=&quot;958&quot; data-origin-height=&quot;452&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;84.11&quot; data-filename=&quot;blob&quot; style=&quot;width: 83.1317%; margin-right: 10px; margin-top: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9YHRv/dJMcad1Ekyf/ZSjQi4hJUD73oMTPjprWvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9YHRv%2FdJMcad1Ekyf%2FZSjQi4hJUD73oMTPjprWvK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;958&quot; height=&quot;452&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ogrY9/dJMcaacQdLd/lReaNTLjCKvr0Gfpud88d0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ogrY9/dJMcaacQdLd/lReaNTLjCKvr0Gfpud88d0/img.png&quot; data-origin-width=&quot;384&quot; data-origin-height=&quot;959&quot; data-is-animation=&quot;false&quot; style=&quot;width: 15.7055%; margin-top: 10px;&quot; data-widthpercent=&quot;15.89&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ogrY9/dJMcaacQdLd/lReaNTLjCKvr0Gfpud88d0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FogrY9%2FdJMcaacQdLd%2FlReaNTLjCKvr0Gfpud88d0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;384&quot; height=&quot;959&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1763369786484&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스&quot; data-og-description=&quot;성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.&quot; data-og-host=&quot;fastcampus.co.kr&quot; data-og-source-url=&quot;https://fastcampus.info/4oKQD6b&quot; data-og-url=&quot;https://fastcampus.co.kr&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/by3hF3/hyZNN7BBpX/lk1dz6pIZOD0BeTnnxAa7k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/8qdE4/hyZNWcoQHA/v0MkKJiILLKMfxtPwEKDWk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/ck0yeT/hyZNNs0x5b/yiZjKaKZrqvrckFvkD0J21/img.png?width=3654&amp;amp;height=1350&amp;amp;face=0_0_3654_1350&quot;&gt;&lt;a href=&quot;https://fastcampus.info/4oKQD6b&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://fastcampus.info/4oKQD6b&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/by3hF3/hyZNN7BBpX/lk1dz6pIZOD0BeTnnxAa7k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/8qdE4/hyZNWcoQHA/v0MkKJiILLKMfxtPwEKDWk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/ck0yeT/hyZNNs0x5b/yiZjKaKZrqvrckFvkD0J21/img.png?width=3654&amp;amp;height=1350&amp;amp;face=0_0_3654_1350');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;fastcampus.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>RAG</category>
      <category>습관챌린지</category>
      <category>습관형성</category>
      <category>직장인자기계발</category>
      <category>패스트캠퍼스</category>
      <category>패스트캠퍼스후기</category>
      <category>환급챌린지</category>
      <author>Sssadie</author>
      <guid isPermaLink="true">https://sssadie.tistory.com/50</guid>
      <comments>https://sssadie.tistory.com/50#entry50comment</comments>
      <pubDate>Sat, 27 Dec 2025 01:17:34 +0900</pubDate>
    </item>
    <item>
      <title>패스트캠퍼스 환급챌린지 45일차 : 테디노트의 RAG 비법노트 강의 후기</title>
      <link>https://sssadie.tistory.com/49</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: center;&quot;&gt;본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #222222; text-align: center;&quot;&gt;작성하였습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;다양한 매개변수 활용&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;기본 매개변수(Default Parameter)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;함수를 호출할 때 매개변수를 제공하지 않으면, 자동으로 살당되는 값&lt;/li&gt;
&lt;li&gt;함수를 유연하게 사용할 수 있음&lt;/li&gt;
&lt;li&gt;매개변수 명=기본값 형태로 정의&lt;/li&gt;
&lt;li&gt;기본 매개변수는 일반 매개변수 뒤에 위치&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[ex.]&lt;/p&gt;
&lt;pre id=&quot;code_1766734715331&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def study(name, language=&quot;python&quot;):
	print(f&quot;{name} 님은 {language} 수업 중입니다.&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size20&quot;&gt;기본 매개변수 활용하기&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;매개변수 값을 전달하지 않으면 기본 매개변수가 사용됨&lt;/li&gt;
&lt;li&gt;기본 매개변수 사용 시, 가변 객체(리스트, 딕셔너리 등)가 변조될 수 있음&lt;br /&gt;- 가변 객체를 기본 매개변수로 사용할 경우, 함수 내부에서 생성하도록 구성&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;키워드 인자(Keyword Argument)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;함수 호출 시 인자(Argument)와 매개변수(Parameter)는 위치에 의해 연결됨&lt;br /&gt;- 위치 인자(Positional Arguments)&lt;/li&gt;
&lt;li&gt;키워드 인자 : 함수 호출 시 인자에 매개변수 이름을 넣어 전달&lt;br /&gt;- 인자와 매개변수의 연결을 명확히 보여줄 수 있음&lt;br /&gt;- 매개변수의 순서에 영향을 받지 않으므로, 보다 유연하게 구성할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;키워드 인자 활용하기&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;키워드 인자와 위치 인자 혼용하여 사용&lt;br /&gt;- 키워드 인자는 위치 인자 뒤에 위치해야 함&lt;/li&gt;
&lt;li&gt;코드의 가독성을 향상시키고 함수 호출을 명확하게 함&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[ex.]&lt;/p&gt;
&lt;pre id=&quot;code_1766735432870&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def greet(name, greeting):
	print(greeting, name)
    
greet(name=&quot;Alice&quot;, greeting=&quot;Hello&quot;) #출력 : Hello Alice
greet(greeting=&quot;Hi&quot;, name=&quot;Bob&quot;) #출력 : Hi Bob&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size20&quot;&gt;가변 인자 리스트(Arbitrary Argument List)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여러 인자를 유연하게 처리할 수 있게 활용&lt;/li&gt;
&lt;li&gt;함수 정의에서 매개변수 이름 앞에 *을 붙여서 정의&lt;/li&gt;
&lt;li&gt;튜플로 묶여서 전달 됨&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1766737830837&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def add_numbers(*args):
	result = 0
    for num in args:
    	result += num
    return result&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;가변 인자 리스트 활용하기&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;원하는 만큼의 인자를 전달할 수 있음&lt;/li&gt;
&lt;li&gt;다른 매개변수와 함께 사용할 수 있으며, 일반 매개변수 뒤에 위치해야 함&lt;/li&gt;
&lt;li&gt;하나만 정의 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1766737875471&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def add_numbers(*args):
	result = 0 
    for num in args:
    	result += num
    return result&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1766737959059&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;add_numbers(1)
add_numbers(1, 10, -10, -5)
add_numbers(1, 2, 3, 10, 100, 50)&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size20&quot;&gt;키워드 가변 인자 리스트(Keyword Arguments List)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여러 인자를 유연하게 처리할 수 있게 활용&lt;/li&gt;
&lt;li&gt;함수 정의에서 매개변수 이름 앞에 **을 붙여서 정의&lt;/li&gt;
&lt;li&gt;딕셔너리로 묶여서 전달 됨&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1766738024078&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def print_kv(**kwargs):
	for key, value in kwargs.items():
    	print(f&quot;{key}: {value}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;키워드 가변 인자 리스트 활용하기&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;원하는 만큼의 인자를 전달할 수 있음&lt;/li&gt;
&lt;li&gt;매개변수 이름과 값을 직접 연결하여 호출(매개변수명=값)&lt;/li&gt;
&lt;li&gt;다른 매개변수와 함께 사용할 수 있으며, 모든 매개변수 중 가장 뒤에 위치해야 함&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1766738097984&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;print_kv(name = &quot;alpha&quot;, age = 10)
print_kv(name = &quot;beta&quot;, country = &quot;USA&quot;)
print_kv(key = &quot;name&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;매개변수 순서 정리&lt;/h4&gt;
&lt;pre id=&quot;code_1766738226889&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def func(
    positional,
    default_param=0,
    *args,
    keyword_only=None,
    **kwargs
):
    pass&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지난 시간에 함수의 개념을 다시 정리할 때, 매개변수에 궁금증이 생겼어요. 같은 함수라도 어떤 매개변수를 어떻게 설계하느냐에 따라 함수의 활용 범위와 가독성이 크게 달라진다는 점이 꽤 인상적이었죠. 오늘은 기본 매개변수부터 키워드 인자, 가변 인자까지 다양한 매개변수 활용 방법에 대해 정리해 봤어요. 매개변수 종류가 너무 많아서 좀 복잡하지만,,,이해한 내용 다시 정리해볼게요?!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;기본 매개변수는 함수를 호출할 때 해당 인자를 전달하지 않으면 자동으로 할당되는 값을 의미합니다. '매개변수명=기본값' 형태로 정의하고, 일반 매개변수 뒤에 위치해야 합니다. 이를 활용하면 함수 호출을 훨씬 간단하게 만들 수 있고, 기본 동작을 자연스럽게 정리할 수 있어요. 다만 주의할 점은, 리스트나 딕셔너리 같은 가변 객체를 기본 매개변수로 사용할 경우 의도치 않게 값 변경이 발생할 수 있다는 거예요. 이 경우 함수 내부에서 객체를 생성하는 방식이 더 안전하죠.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;다음으로 키워드 인자는 함수 호출 시 '매개변수명=값' 형태로 전달하는 방식을 의미합니다. 위치에 의존하지 않기 때문에 인자의 순서를 바꿔도 호출할 수 있으며, 코드만 보아도 어떤 값이 어떤 역할을 하는지 명확히 드러나죠. 인자가 많아질수록 키워드 인자는 가독성과 유지보수성 측면에서 큰 장점을 가집니다. 위치 인자와 키워드 인자를 함께 사용할 수도 있지만, 이 때는 위치 인자가 항상 앞에 와야하죠. 위치를 기억하고 알맞게 정렬하는 것도 다소 어려움이 있네요...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;가변 인자 리스트를 사용하면 전달되는 인자의 개수를 미리 정하지 않아도 됩니다. 여러 개의 인자가 튜플 형태로 묶여 함수에 전달되고, 반복 처리나 유연한 입력이 필요한 경우 유용하게 쓰입니다. 여기에 더해 키워드 가변인자 리스트는 매개변수 이름과 값을 쌍으로 받아서 딕셔너리 형태로 처리할 수 있습니다. 설정값이나 옵션을 처리할 때 특히 자주 사용되죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;오늘 다시 한번 느꼈어요. 함수는 단순히 동작하는 코드 묶음이 아니라 사용자를 고려해 설계해야 하는 인터페이스라는 것을요. 앞으로 함수를 작성할 때 '일단 되게 만들기' 보다, '어떻게 쓰일 함수인가'를 먼저 고민해야겠어요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6VYDu/dJMcadN6PkI/rs5TzhFesFQHF9uy8em531/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6VYDu/dJMcadN6PkI/rs5TzhFesFQHF9uy8em531/img.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;258&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;47.88&quot; data-filename=&quot;blob&quot; style=&quot;width: 47.3221%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6VYDu/dJMcadN6PkI/rs5TzhFesFQHF9uy8em531/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6VYDu%2FdJMcadN6PkI%2Frs5TzhFesFQHF9uy8em531%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;512&quot; height=&quot;258&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c5kpJk/dJMcab3SZYA/FgtYuKTzKKx0kt8movcYb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c5kpJk/dJMcab3SZYA/FgtYuKTzKKx0kt8movcYb1/img.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;237&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;52.12&quot; data-filename=&quot;blob&quot; style=&quot;width: 51.5152%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c5kpJk/dJMcab3SZYA/FgtYuKTzKKx0kt8movcYb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc5kpJk%2FdJMcab3SZYA%2FFgtYuKTzKKx0kt8movcYb1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;512&quot; height=&quot;237&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vCWtx/dJMcafSKYIn/SSXzfl4Mlp0yGE8Rgj4tuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vCWtx/dJMcafSKYIn/SSXzfl4Mlp0yGE8Rgj4tuK/img.png&quot; data-origin-width=&quot;958&quot; data-origin-height=&quot;479&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;83.21&quot; data-filename=&quot;blob&quot; style=&quot;width: 82.2428%; margin-right: 10px; margin-top: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vCWtx/dJMcafSKYIn/SSXzfl4Mlp0yGE8Rgj4tuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvCWtx%2FdJMcafSKYIn%2FSSXzfl4Mlp0yGE8Rgj4tuK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;958&quot; height=&quot;479&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5AaXJ/dJMcac2KRkT/fxsxBnLyJvIDDQYBgtcZZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5AaXJ/dJMcac2KRkT/fxsxBnLyJvIDDQYBgtcZZk/img.png&quot; data-origin-width=&quot;387&quot; data-origin-height=&quot;959&quot; data-is-animation=&quot;false&quot; style=&quot;width: 16.5944%; margin-top: 10px;&quot; data-widthpercent=&quot;16.79&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5AaXJ/dJMcac2KRkT/fxsxBnLyJvIDDQYBgtcZZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5AaXJ%2FdJMcac2KRkT%2FfxsxBnLyJvIDDQYBgtcZZk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;387&quot; height=&quot;959&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;figure id=&quot;og_1763369786484&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스&quot; data-og-description=&quot;성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.&quot; data-og-host=&quot;fastcampus.co.kr&quot; data-og-source-url=&quot;https://fastcampus.info/4oKQD6b&quot; data-og-url=&quot;https://fastcampus.co.kr&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/by3hF3/hyZNN7BBpX/lk1dz6pIZOD0BeTnnxAa7k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/8qdE4/hyZNWcoQHA/v0MkKJiILLKMfxtPwEKDWk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/ck0yeT/hyZNNs0x5b/yiZjKaKZrqvrckFvkD0J21/img.png?width=3654&amp;amp;height=1350&amp;amp;face=0_0_3654_1350&quot;&gt;&lt;a href=&quot;https://fastcampus.info/4oKQD6b&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://fastcampus.info/4oKQD6b&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/by3hF3/hyZNN7BBpX/lk1dz6pIZOD0BeTnnxAa7k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/8qdE4/hyZNWcoQHA/v0MkKJiILLKMfxtPwEKDWk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/ck0yeT/hyZNNs0x5b/yiZjKaKZrqvrckFvkD0J21/img.png?width=3654&amp;amp;height=1350&amp;amp;face=0_0_3654_1350');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;fastcampus.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>RAG</category>
      <category>습관챌린지</category>
      <category>습관형성</category>
      <category>직장인자기계발</category>
      <category>패스트캠퍼스</category>
      <category>패스트캠퍼스후기</category>
      <category>환급챌린지</category>
      <author>Sssadie</author>
      <guid isPermaLink="true">https://sssadie.tistory.com/49</guid>
      <comments>https://sssadie.tistory.com/49#entry49comment</comments>
      <pubDate>Fri, 26 Dec 2025 17:46:47 +0900</pubDate>
    </item>
    <item>
      <title>패스트캠퍼스 환급챌린지 44일차 : 테디노트의 RAG 비법노트 강의 후기</title>
      <link>https://sssadie.tistory.com/48</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: center;&quot;&gt;본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #222222; text-align: center;&quot;&gt;작성하였습니다.&lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;함수의 개념과 활용&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;함수(Function)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 하나의 단위로 패키지 된 특정 작업을 수행하는 프로그램 명령 시퀀스&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;- 프로그램의 품질과 신뢰성을 높이며 유지보수 비용을 대폭 절감할 수 있음&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size20&quot;&gt;함수의 정의&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;def {function_name}({parameters}) : &lt;/b&gt;로 함수의 정의 시작&lt;/li&gt;
&lt;li&gt;들여쓰기(indent)로 기존 코드와 구분됨&lt;/li&gt;
&lt;li&gt;매개변수가 없을 경우, 생략 가능&lt;/li&gt;
&lt;li&gt;반환값이 없을 경우, 생략 가능&lt;/li&gt;
&lt;li&gt;'함수의 정의'로는 실제 명령문이 실행되지 않음&lt;/li&gt;
&lt;li&gt;동일한 함수명으로 정의할 경우, 함수가 재정의 됨&lt;/li&gt;
&lt;li&gt;함수는 반환되는 순간 종료됨(return statement)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;함수의 호출&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정의한 함수를 실제로 사용&lt;/li&gt;
&lt;li&gt;function_name(arguments) 형태로 호출&lt;br /&gt;- 매개변수(parameter) : 함수의 정의에 사용되는 변수명&lt;br /&gt;- 인자(argument) : 함수의 호출 시 전달되는 실제 값&lt;/li&gt;
&lt;li&gt;결과값을 변수에 저장할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;함수의 활용&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;코드 재사용성 증가&lt;/li&gt;
&lt;li&gt;가독성 향상&lt;/li&gt;
&lt;li&gt;유지보수성 향상&lt;/li&gt;
&lt;li&gt;재귀호출&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;※ 재귀 호출 주의사항&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;종료 조건 필수&lt;/li&gt;
&lt;li&gt;잘못 설계하면 스택 오버플로우&lt;/li&gt;
&lt;li&gt;반복문보다 직관적인 경우에만 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1766628615642&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def sum(num1, num2):
    print(f&quot;첫 번째 숫자: {num1}&quot;)
    print(f&quot;두 번째 숫자: {num2}&quot;)
    
    return num1 + num2&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size18&quot;&gt;함수명(function name)&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;함수 바깥에서 해당 함수를 호출하기 위한 식별자&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size18&quot;&gt;매개변수(parameters)&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;함수가 실행되는데 필요한 변수&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;(num1, num2)&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;매개변수도 변수이기 때문에 다양한 형태의 값을 전달할 수 있음.&lt;/li&gt;
&lt;li&gt;함수 정의에 따라서 매개변수를 전달하지 않은 것도 가능.&lt;/li&gt;
&lt;li&gt;하나의 값이 아니라 여러 개의 값을 동시에 정의해서 전달하는 것도 가능.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size18&quot;&gt;본문(function body)&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;함수가 호출되었을 때 실행될 명령문의 집합&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;print(f&quot;첫 번째 숫자: {num1}&quot;)&lt;br /&gt;print(f&quot;두 번째 숫자: {num2}&quot;)&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전체적인 생산성이 향상되는 '코드의 재사용'을 위해 본문을 재사용 가능하도록 잘 구성해야함.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;text-align: justify; letter-spacing: 0px;&quot;&gt;잘 정의된 함수는 반복적으로 사용될 수 있는 코드를 하나의 함수로 대체할 수 있게 만들어주기 때문에 전체 코드의 양을 줄이고, 신뢰할 수 있게 작성된 함수는 전체 프로그램의 짜임새를 높여줌.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size18&quot;&gt;반환값(return value)&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;함수 실행이 완료된 후 함수를 호출한 곳에 반환할 결과값&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;사실 '함수'라는 개념은 프로그래밍을 배우기 전부터 여러 분야에서 이미 익숙하게 접해왔죠. y=f(x) 형태의 함수 말입니다. 함수는 어떤 값 x가 주어졌을 때, 정해진 규칙에 따라 하나의 결과 y를 반환하는 관계를 의미하죠. 중요한 점은, 같은 입력값이 들어오면 항상 같은 결과가 나온다는 겁니다. 즉, 함수는 입력값과 출력 사이의 일관된 규칙을 정의한 개념이라고 볼 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;이 개념을 조금 더 확장해 보겠습니다. 함수는 단순히 숫자 계산에만 국한되지는 않죠. 어떤 값이 들어오면, 그 값에 대해 미리 정의된 과정을 거쳐 결과를 만들어내는 블랙박스와 같다고 볼 수 있죠. 우리는 함수 내부에서 어떤 계산이 이루어지는지 몰라도, 입력과 출력의 관계만 알면 함수를 사용할 수 있습니다. 수학에서 함수가 복잡한 계산을 단순화해 주는 도구였다면, 프로그래밍에서의 함수도 역시나 같은 역할을 하죠.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;프로그래밍에서 함수는 수학적 개념을 그대로 확장한 형태라고 볼 수 있어요. 특정 입력값(매개변수)를 받아서 정해진 로직을 수행한 뒤 결과값을 반환한다는 점에서 y=f(x)와 구조적으로 동일하죠. 다만, 프로그래밍 함수는 숫자뿐만 아니라 문자열, 리스트, 객체 등 다양한 형태의 데이터를 입력과 출력으로 다룰 수 있다는 점이 달라요. 또한 단순한 계산 뿐만 아니라 출력, 저장, 조건 판단 등 복잡한 작업도 하나의 함수로 묶을 수 있죠. 이렇게 보면 파이썬의 함수는 '코드를 묶는 문법'이라기보다 생각을 정리하는 방식에 가깝다는 생각이 들어요. 어떤 문제를 해결할 때, 입력은 무엇이고 그 입력을 받아 어떤 처리를 하며, 어떤 결과를 반환해야 하는지를 명확히 정의하는 과정이 곧 함수 설계니까요.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;오늘 함수 개념을 다시 정리하면서, 함수는 프로그래밍을 위한 새로운 개념이 아니라 이미 익숙했던 사고 방식을 코드로 옮긴 것이라는 사실을 다시 느낄 수 있었어요. 앞으로 코드를 작성할 때도 단순히 '동작하는 코드'를 만드는 것이 아니라, 입력과 출력이 명확한 함수로 문제를 나누는 습관을 들일 수 있도록 생각하면서 연습해야겠어요. 결국 '좋은 프로그램'이라는 것은, 잘 정의된 함수들의 조합이라는 생각이 드네요.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;오늘은 메리크리스마스!!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zC9X3/dJMcacaD2gT/KL9HJWzM94XHCrMWJrUkN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zC9X3/dJMcacaD2gT/KL9HJWzM94XHCrMWJrUkN1/img.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;215&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;52.22&quot; data-filename=&quot;blob&quot; style=&quot;width: 51.615%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zC9X3/dJMcacaD2gT/KL9HJWzM94XHCrMWJrUkN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzC9X3%2FdJMcacaD2gT%2FKL9HJWzM94XHCrMWJrUkN1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;512&quot; height=&quot;215&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vClxH/dJMcac2Kbmq/fk6QkkBkqceK4fy7ImxnTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vClxH/dJMcac2Kbmq/fk6QkkBkqceK4fy7ImxnTk/img.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;235&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;47.78&quot; data-filename=&quot;blob&quot; style=&quot;width: 47.2222%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vClxH/dJMcac2Kbmq/fk6QkkBkqceK4fy7ImxnTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvClxH%2FdJMcac2Kbmq%2Ffk6QkkBkqceK4fy7ImxnTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;512&quot; height=&quot;235&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1zLH5/dJMcaaDTJqB/nfSqfUGpe3tk9qa6cQKXFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1zLH5/dJMcaaDTJqB/nfSqfUGpe3tk9qa6cQKXFk/img.png&quot; data-origin-width=&quot;958&quot; data-origin-height=&quot;475&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;83.38&quot; data-filename=&quot;blob&quot; style=&quot;width: 82.4081%; margin-right: 10px; margin-top: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1zLH5/dJMcaaDTJqB/nfSqfUGpe3tk9qa6cQKXFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1zLH5%2FdJMcaaDTJqB%2FnfSqfUGpe3tk9qa6cQKXFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;958&quot; height=&quot;475&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/A4jTs/dJMcadAzIpO/DzKWlnYKh87PqrJcAY29K1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/A4jTs/dJMcadAzIpO/DzKWlnYKh87PqrJcAY29K1/img.png&quot; data-origin-width=&quot;386&quot; data-origin-height=&quot;960&quot; data-is-animation=&quot;false&quot; style=&quot;width: 16.4291%; margin-top: 10px;&quot; data-widthpercent=&quot;16.62&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/A4jTs/dJMcadAzIpO/DzKWlnYKh87PqrJcAY29K1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA4jTs%2FdJMcadAzIpO%2FDzKWlnYKh87PqrJcAY29K1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;386&quot; height=&quot;960&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;figure id=&quot;og_1763369786484&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스&quot; data-og-description=&quot;성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.&quot; data-og-host=&quot;fastcampus.co.kr&quot; data-og-source-url=&quot;https://fastcampus.info/4oKQD6b&quot; data-og-url=&quot;https://fastcampus.co.kr&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/by3hF3/hyZNN7BBpX/lk1dz6pIZOD0BeTnnxAa7k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/8qdE4/hyZNWcoQHA/v0MkKJiILLKMfxtPwEKDWk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/ck0yeT/hyZNNs0x5b/yiZjKaKZrqvrckFvkD0J21/img.png?width=3654&amp;amp;height=1350&amp;amp;face=0_0_3654_1350&quot;&gt;&lt;a href=&quot;https://fastcampus.info/4oKQD6b&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://fastcampus.info/4oKQD6b&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/by3hF3/hyZNN7BBpX/lk1dz6pIZOD0BeTnnxAa7k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/8qdE4/hyZNWcoQHA/v0MkKJiILLKMfxtPwEKDWk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/ck0yeT/hyZNNs0x5b/yiZjKaKZrqvrckFvkD0J21/img.png?width=3654&amp;amp;height=1350&amp;amp;face=0_0_3654_1350');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;fastcampus.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>RAG</category>
      <category>습관챌린지</category>
      <category>습관형성</category>
      <category>직장인자기계발</category>
      <category>패스트캠퍼스</category>
      <category>패스트캠퍼스후기</category>
      <category>환급챌린지</category>
      <author>Sssadie</author>
      <guid isPermaLink="true">https://sssadie.tistory.com/48</guid>
      <comments>https://sssadie.tistory.com/48#entry48comment</comments>
      <pubDate>Thu, 25 Dec 2025 12:01:01 +0900</pubDate>
    </item>
    <item>
      <title>패스트캠퍼스 환급챌린지 43일차 : 테디노트의 RAG 비법노트 강의 후기</title>
      <link>https://sssadie.tistory.com/47</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: center;&quot;&gt;본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #222222; text-align: center;&quot;&gt;작성하였습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;흐름제어(조건문, 반복문, 예외처리)&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;흐름제어 (Control Flow)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로그램이 실행되는 동안 명령문이나 코드 블록의 실행 순서를 제어하고 결정하는 프로그래밍 개념&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 즉, 흐름제어는 '프로그램의 사고방식'을 의미하고, 변수 &amp;middot;자료구조가 재료라면 흐른제어는 판단하고 반복하는 사고 구조를 의미.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;흐름제어의 종류&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;조건문&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조건문은 조건을 검사하고 그 결과에 따라 다른 명령문 블록을 실행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 10점이 넘으면 합격, 그렇지 않으면 불합격&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;반복문&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;명령문 블록을 여러 번 실행하는 데 사용 조건이 참인 동안 명령문을 반복 실행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 10번 반복하여 메세지를 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;예외 처리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예상치 못한 오류 또는 예외 상황을 처리하기 위해 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 리스트에 없는 값을 삭제하려고 하면 잘못된 입력이라 출력하고 해당 명령을 무시&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;조건문&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&quot;프로그램&quot;은 다양한 명령문들의 집합&lt;/li&gt;
&lt;li&gt;언제 어떠한 명령문을 사용할 것인가?&lt;/li&gt;
&lt;li&gt;다양한 분기와 선택, &quot;논리구조&quot;의 구현&lt;/li&gt;
&lt;li&gt;만약(if)와 그렇지 않다면(else)로 구성&lt;/li&gt;
&lt;li&gt;if 뒤에는 참/거짓을 가지는 조건문&lt;/li&gt;
&lt;li&gt;else 뒤에는 조건이 작성되지 않음&lt;/li&gt;
&lt;li&gt;if{boolean statement}:&lt;br /&gt;- 조건에 의해 수행될 명령은 indent(들여쓰기)로 구분 (Tab / 4 Spaces)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;조건문 예시&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1766545124353&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#10점이 넘으면 합격
score = 15
is_passed = False

if score &amp;gt; 10:
	is_passed = True&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1766545282872&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#홀수면 &quot;Odd&quot;, 짝수면 &quot;Even&quot; 출력
num = 11
if(num % 2 == 0):
	print(&quot;Even&quot;)
  else:
  	print(&quot;odd&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1766545382676&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#1을 입력하면, 새로운 할 일 추가
choice = input(&quot;선택 : &quot;)

if choice == &quot;1&quot;:
	todo = input(&quot;추가할 일 : &quot;)
    todo_list.append(todo)
    print(f&quot;{todo} 할 일이 추가되었습니다.&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size20&quot;&gt;복합조건문&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여러 조건들을 중첩하여 체크하는 경우&lt;/li&gt;
&lt;li&gt;한 if에서 필터링이 되지 않는 경우&lt;/li&gt;
&lt;li&gt;여러 조건을 동시에 만족해야 하는 경우&lt;/li&gt;
&lt;li&gt;계층구조에 따른 조건문을 만들고 싶은 경&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;복합조건문 - elif&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;elif {boolean statement}:&lt;br /&gt;- if 조건이 성립하지 않으며, 새로운 조건을 만족할 때 수행됨&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1766545550713&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;score = 8
if score == 10:
	print(&quot;You're the Best:&quot;)
elif score &amp;gt; 5:
	print(&quot;You Passed!&quot;)
else:
	print(&quot;You Failed..&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;복합조건문 - Multi Condition&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;if {boolean statement} [and/or] {boolean statement}:&lt;br /&gt;&amp;rarr;&amp;nbsp;논리연산을 거친 결과가 True인 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1766545692973&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;level = 5
is_passed = True

if level &amp;gt; and is_passed:
	print(&quot;You passed!&quot;)
elif is_passed:
	print(&quot;Your level is not enough&quot;)
else:
	print(&quot;You should pass&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;반복문&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;특정 작업을 반복해서 수행&lt;/li&gt;
&lt;li&gt;'다른 값'에 대한 '동일한 연산'을 수행&lt;/li&gt;
&lt;li&gt;자동적이고 효율적으로 반복 수행할 수 있음&lt;/li&gt;
&lt;li&gt;반복문은 '언제 멈출 것인가'가 핵심!&lt;/li&gt;
&lt;li&gt;반복 + 조건은 항상 세트로 생각&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;반복문 - for&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;for : 시퀀스(리스트, 튜플, 문자열 등)을 순회할 수 있음&lt;br /&gt;* 시퀀스 : 반복 가능한(Next 요소가 있는) 저장공간&lt;/li&gt;
&lt;li&gt;for를 통해 시퀀스 요소들에 동일한 연산을 수행&lt;/li&gt;
&lt;li&gt;고정된 수행횟수&lt;br /&gt;* 반복하여 수행될 명령은 indent(들여쓰기)로 구분 (Tab / 4 Spaces)&lt;/li&gt;
&lt;li&gt;for {변수명} in {시퀀스}:&lt;/li&gt;
&lt;li&gt;else:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1766546445021&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;numbers = [1, 2, 3, 4, 5]

for number in numbers:
	print(number)
else:
	print(&quot;출력이 완료되었습니다.&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;range()&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;range([start, ], stop [, step])&lt;/li&gt;
&lt;li&gt;{Start}부터 {Step}만큼 증가, {Stop}까지의 숫자 목록을 생성&lt;/li&gt;
&lt;li&gt;5회 반복(0~4), i갑은 1씩 증가&lt;/li&gt;
&lt;li&gt;range(n) : 0~(n-1) 까지의 정수&lt;br /&gt;range(i, n) : i부터 (n-1) 까지의 정수&lt;br /&gt;range(i, n, x) : i부터 (n-1) 까지, x 간격으로&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;enumerate()&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시퀀스를 순회하며, 요소와 인덱스 쌍을 튜플로 반환&lt;/li&gt;
&lt;li&gt;요소와 위치(순서)를 동시에 활용할 수 있음&lt;/li&gt;
&lt;li&gt;for loop의 시퀀스를 enumerate()로 감싸서 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1766546744183&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fruits = [&quot;사과&quot;, &quot;바나나&quot;, &quot;체리&quot;, &quot;딸기&quot;]
for index, fruit in enumerate(fruits, start=1):
	print(f&quot;{index} 번째 과일 : {fruit}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;반복문 - while&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;while : 조건이 True인 동안 반복&lt;/li&gt;
&lt;li&gt;수행횟수가 고정되지 않음&lt;br /&gt;* 반복하여 수행될 명령은 indent(들여쓰기)로 구분 (Tab / 4 Spaces)&lt;/li&gt;
&lt;li&gt;반복문 내부에서 상태의 변화를 만들어주거나, 종료될 수 있는 상황을 만들어주어야 함&lt;/li&gt;
&lt;li&gt;while {boolean_statement}:&lt;/li&gt;
&lt;li&gt;else:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1766546914445&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;counter = 0
while counter &amp;lt; 3:
	print(f'반복문 실행 중입니다. {counter}')
    counter = counter + 1
else:
	print('반복문이 종료되었습니다.')&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size18&quot;&gt;반복문 제어하기&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;break&lt;br /&gt;&amp;rarr; 현재 수행 중인 반복문을 중단&lt;/li&gt;
&lt;li&gt;continue&lt;br /&gt;&amp;rarr; 현재 수행 중인 반복 회차를 종료하고, 다음 반복 회차로 넘어감&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;반복문 예시&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1766547056918&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#주어진 숫자 리스트를 출력하다가, 10보다 큰 값을 만나면 종료하라
arr = [1, 3, 5, 11, 6, 15, 30]
for i in arr:
	if i &amp;gt; 10:
    	break
else:
	print(i)&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size18&quot;&gt;무한 루프&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;while True:&lt;/li&gt;
&lt;li&gt;이 Loop는 프로그래머가 작성한 종료 규칙 또는 강제 중지로만 종료됨&lt;/li&gt;
&lt;li&gt;특정 상황에 활용&lt;br /&gt;&amp;rarr; 사용자 입력 대기 상황&lt;br /&gt;&amp;rarr; 실시간 데이터 수집&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;pass&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아무 작업도 수행하지 않고 코드블록을 빠져나오기 위한 예약어&lt;/li&gt;
&lt;li&gt;아직 구현하지 않은 부분을 나타내거나, 차후 추가하기 위한 목적으로 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1766547315703&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;while True:
	user_input = input(&quot;원하는 작업을 선택하세요 (q로 종료):&quot;)
    if user_input == 'q':
    	break
    elif user_input == '1':
    	#나중에 추가할 코드
        pass
    elif user_input == '2':
    	#나중에 추가할 코드
        pass&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;▶&amp;nbsp;모든 프로그램의 본질 :&amp;nbsp; 판단(if), 반복(loop), 실패 대비(exception)&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;오늘 학습한 흐름제어란 프로그램이 실행되는 동안 어떤 명령문을 어떤 순서로 실행할지 결정하는 개념으로, 단순히 코드를 위에서 아래로 실행하는 것을 넘어 조건에 따라 분기하고, 필요할 때 반복하며, 예외 상황을 처리하는 구조를 만들어요. 흐름 제어의 대표적인 구성 요소는 조건문, 반복문, 예외처리가 있죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;조건문은 특정 조건을 검사한 뒤, 그 결과에 따라 다른 명령문 블록을 실행하는, 말 그대로 코드에 '조건'을 달아 작성하는 겁니다. '점수가 60점을 넘으면 합격, 그렇지 않으면 불합격' 처럼, 현실의 판단 구조를 그대로 코드로 옮긴 형태라고 볼 수 있어요. 파이썬의 조건문은 if, elif, else로 구성되며, 조건 뒤에는 반드시 참(True) 또는 거짓(False)로 평가되는 식이 와야합니다. 특히 elif를 사용한 복합 조건문은 여러 조건을 계층적으로 판단할 때 매우 유용하죠. 조건을 위에서부터 차례로 검사하기 때문에, 논리 흐름이 자연스럽고 코드의 가독성도 좋아집니다. 또한 and, or 같은 논리 연산자를 활용하면 여러 조건을 동시에 고려하는 판단도 가능해집니다. 반복문은 특정 조건을 만족하는 동안 명령문 블록을 여러 번 실행할 때 사용됩니다. &quot;5번 반복해서 메세지를 출력한다&quot;와 같은 작업을 효율적으로 처리할 수 있고, 반복 횟수나 종료 조건을 어떻게 설정하느냐가 매우 중요합니다. 주의할 점은, 반복문은 잘못 작성하면 무한 루프에 빠질 수 있기 때문에, 항상 &quot;언제 멈출지&quot;를 함께 고려해야 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;흐름제어는 단순한 문법이 아니라 프로그램에 사고 능력을 부여하는 핵심 장치라는 것을 이해할 수 있는 수업이었네요. 앞으로 더 복잡한 프로그램이나 AI 시스템을 만들 때 조건과 반복, 예외처리로 이루어진 흐름제어를 잘 생각해서 구성해야겠어요!!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FHj6I/dJMcacBIrbW/bl7kg6xkegymnecGrQb0HK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FHj6I/dJMcacBIrbW/bl7kg6xkegymnecGrQb0HK/img.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;220&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;45.14&quot; data-filename=&quot;blob&quot; style=&quot;width: 44.6123%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FHj6I/dJMcacBIrbW/bl7kg6xkegymnecGrQb0HK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFHj6I%2FdJMcacBIrbW%2Fbl7kg6xkegymnecGrQb0HK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;512&quot; height=&quot;220&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cFGxJc/dJMcadggBcJ/AkYrUr8SGnFYmhlwSltjn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cFGxJc/dJMcadggBcJ/AkYrUr8SGnFYmhlwSltjn1/img.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;181&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;54.86&quot; data-filename=&quot;blob&quot; style=&quot;width: 54.2249%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cFGxJc/dJMcadggBcJ/AkYrUr8SGnFYmhlwSltjn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFGxJc%2FdJMcadggBcJ%2FAkYrUr8SGnFYmhlwSltjn1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;512&quot; height=&quot;181&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ctO7SB/dJMcadggBcK/f5pqtTHU9GpAhkT8YyKKCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ctO7SB/dJMcadggBcK/f5pqtTHU9GpAhkT8YyKKCk/img.png&quot; data-origin-width=&quot;958&quot; data-origin-height=&quot;430&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;84.62&quot; data-filename=&quot;blob&quot; style=&quot;width: 83.6335%; margin-right: 10px; margin-top: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ctO7SB/dJMcadggBcK/f5pqtTHU9GpAhkT8YyKKCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FctO7SB%2FdJMcadggBcK%2Ff5pqtTHU9GpAhkT8YyKKCk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;958&quot; height=&quot;430&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oRmIR/dJMcagKSwKb/0mTzhMtMPBJk1gslISnkP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oRmIR/dJMcagKSwKb/0mTzhMtMPBJk1gslISnkP1/img.png&quot; data-origin-width=&quot;388&quot; data-origin-height=&quot;958&quot; data-is-animation=&quot;false&quot; style=&quot;width: 15.2037%; margin-top: 10px;&quot; data-widthpercent=&quot;15.38&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oRmIR/dJMcagKSwKb/0mTzhMtMPBJk1gslISnkP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoRmIR%2FdJMcagKSwKb%2F0mTzhMtMPBJk1gslISnkP1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;388&quot; height=&quot;958&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1763369786484&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스&quot; data-og-description=&quot;성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.&quot; data-og-host=&quot;fastcampus.co.kr&quot; data-og-source-url=&quot;https://fastcampus.info/4oKQD6b&quot; data-og-url=&quot;https://fastcampus.co.kr&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/by3hF3/hyZNN7BBpX/lk1dz6pIZOD0BeTnnxAa7k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/8qdE4/hyZNWcoQHA/v0MkKJiILLKMfxtPwEKDWk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/ck0yeT/hyZNNs0x5b/yiZjKaKZrqvrckFvkD0J21/img.png?width=3654&amp;amp;height=1350&amp;amp;face=0_0_3654_1350&quot;&gt;&lt;a href=&quot;https://fastcampus.info/4oKQD6b&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://fastcampus.info/4oKQD6b&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/by3hF3/hyZNN7BBpX/lk1dz6pIZOD0BeTnnxAa7k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/8qdE4/hyZNWcoQHA/v0MkKJiILLKMfxtPwEKDWk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/ck0yeT/hyZNNs0x5b/yiZjKaKZrqvrckFvkD0J21/img.png?width=3654&amp;amp;height=1350&amp;amp;face=0_0_3654_1350');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;fastcampus.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>RAG</category>
      <category>습관챌린지</category>
      <category>습관형성</category>
      <category>직장인자기계발</category>
      <category>패스트캠퍼스</category>
      <category>패스트캠퍼스후기</category>
      <category>환급챌린지</category>
      <author>Sssadie</author>
      <guid isPermaLink="true">https://sssadie.tistory.com/47</guid>
      <comments>https://sssadie.tistory.com/47#entry47comment</comments>
      <pubDate>Wed, 24 Dec 2025 13:11:29 +0900</pubDate>
    </item>
    <item>
      <title>패스트캠퍼스 환급챌린지 42일차 : 테디노트의 RAG 비법노트 강의 후기</title>
      <link>https://sssadie.tistory.com/46</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: center;&quot;&gt;본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #222222; text-align: center;&quot;&gt;작성하였습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;자료구조(Data Structure)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터를 구성하고 조직화하는 방법에 대한 체계적인 접근 방식&lt;/li&gt;
&lt;li&gt;데이터의 효율적 저장, 관리, 검색 및 조작에 활용됨&lt;/li&gt;
&lt;li&gt;실제 세계의 문제를 모델링하고, 해결하기 위한 도구&lt;/li&gt;
&lt;li&gt;작성한 프로그램의 효율에 큰 영향을 미침&lt;/li&gt;
&lt;li&gt;프로그램 언어 및 프레임워크에 의해 지원되는 자료구조도 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;시간복잡도(Time Complexity)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 특정 알고리즘이 실행되는 데에 필요한 연산 시간의 총량&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;- big-O 표기법으로 표현 됨(최악의 경우로 측정)&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;- n은 입력의 크기&lt;/p&gt;
&lt;h4 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size20&quot;&gt;공간복잡도&lt;/h4&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;- 알고리즘, 프로그램을 수행하는데 필요한 메모리 공간의 총량&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;대표적인 자료구조&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Array (배열)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;동일한 요소(element)들이 나열된 자료형&lt;/li&gt;
&lt;li&gt;인덱스를 통해 특정 위치의 값을 지정할 수 있음&lt;/li&gt;
&lt;li&gt;연속된 메모리 공간에 할당&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Linked List (연결 리스트)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터 요소들을 노드(Node)라는 단위로 연결하여, 저장하는 방식&lt;/li&gt;
&lt;li&gt;노드는 데이터와 다음 노드를 가리키는 링크로 구성&lt;/li&gt;
&lt;li&gt;추가와 삭제가 용이하며, 길이를 유동적으로 조절할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Stack (스택)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;순서를 가지는 자료형&lt;/li&gt;
&lt;li&gt;LIFO(Last-In-First-Out / 후입선출), 최근 들어온 데이터 순서대로 조회&lt;/li&gt;
&lt;li&gt;Push &amp;amp; Pop&lt;/li&gt;
&lt;li&gt;실행취소, 인터넷 방문기록 등&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Queue (큐)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;순서를 가지는 자료형&lt;/li&gt;
&lt;li&gt;FIFO(First-In-First-Out / 선입선출), 입력된 순서대로 조회&lt;/li&gt;
&lt;li&gt;Enqueue &amp;amp; Dequeue&lt;/li&gt;
&lt;li&gt;줄서기, 예약 작업 등&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Hash Table (해시테이블)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Key, Value (키와 값)로 구성되는 자료구조&lt;/li&gt;
&lt;li&gt;Key는 별도의 연산(해싱)을 거쳐, 특정 값으로 변환됨&lt;/li&gt;
&lt;li&gt;이에 대한 값 저장소가 1:1로 매칭 -O(1)&lt;/li&gt;
&lt;li&gt;키 충돌 문제가 발생할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Tree (트리)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;계층 및 분기 구조를 가지는 자료구조&lt;/li&gt;
&lt;li&gt;Root(루트), Parent/Children (부모/자식)&lt;/li&gt;
&lt;li&gt;디렉토리 / 파일구조&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Binary Tree (이진 트리)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자식 노드가 최대 2개로 구성된 트리&lt;/li&gt;
&lt;li&gt;이진 탐색 트리 : 왼쪽 자식은 부모보다 작고, 오른쪽 자식은 부모보다 큼&lt;/li&gt;
&lt;li&gt;O(logn)&lt;/li&gt;
&lt;li&gt;균형잡힌 이진 트리&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;자료구조 선택의 기준&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터의 종류와 형태&lt;/li&gt;
&lt;li&gt;주요 연산의 종류&lt;/li&gt;
&lt;li&gt;시간 복잡도와 공간 복잡도&lt;/li&gt;
&lt;li&gt;애플리케이션의 활용 분야&lt;/li&gt;
&lt;li&gt;효율성 및 성능&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;오늘은 그동안 머릿속에 잘 정립되지 않았던 자료구조에 대해 배웠어요. 사실 자료구조 수업을 아예 안 들어본 것도 아니고, 학교에서도 여러 번 접했지만 big-O만 나오면 항상 '이게 뭐였더라? 어떻게 계산하더라?' 하고 넘어가곤 했었죠. 트리, 큐, 스택 같은 개념들도 그때그때 외워서 시험을 치르긴 했지만, 실제로 왜 필요한지, 언제 쓰이는지에 대한 감은 좀 부족했던 것 같아요. 그런데 오늘 강의를 통해 자료구조를 단순히 암기할 내용이 아니라, 문제를 해결하기 위한 도구로 바라보면서 개념이 훨씬 또렷하게 잡혔어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;자료구조는 데이터를 어떻게 저장하고, 어떻게 꺼내고, 어떻게 수정할 것인지를 정하는 체계적인 방법으로, 같은 기능을 구현하더라도 어떤 자료구조를 선택하느냐에 따라 프로그램의 효율성과 성능이 크게 달라져요. 이때 함께 등장하는 개념이 바로 시간복잡도와 공간복잡도죠. 알고리즘이 얼마나 빠르게 동작하는지, 얼마나 많은 메모리를 사용하는지를 정량적으로 판단하기 위한 기준이라는 점에서, 실제 개발에서 중요한 지표라는걸 깨달을 수 있었어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;대표적인 자료구조들은 하나씩 정리하면서 각각 쓰이는 맥락이 훨씬 명확해졌는데, 제가 이해한 내용 정리해볼게요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 배열( Array) : 인덱스를 통해 빠르게 접근할 수 있지만 크기가 고정되어 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 연결 리스트(Linked List) : 후입선출 구조로 실행 취소나 브라우저 뒤로가기 기능에 사용됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 큐(Queue) : 선입선출 구조로 작업 대기열이나 예약 시스템에 적합&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 해시 테이블(Hash Table) : 키와 값 구조로 매우 빠른 조회 속도 제공(but, 충돌 처리 필요)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 트리(Tree), 이진 탐색 트리(Binary Search Tree) : 계층적 구조 표현에 탁월, 데이터 검색과 정렬에 강점을 가짐.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 정리하고 보니까 디렉토리 구조, 작업 큐, 검색 시스템 등 우리가 매일 사용하는 서비스들 뒤에는 결국 적절한 자료구조 선택이 존재한다는걸 깨달을 수 있었어요. 앞으로 코드를 작성할 때 일단 구현하고 보는게 아니라, 어떤 자료구조가 이 문제에 가장 적합할지를 고려해서 체계적으로 구현할 수 있을 것 같아요. 사실, 아직은 익숙하지 않지만, 반복해서 보고 직접 써보면서 자료구조를 자연스럽게 떠올리는 개발자가 되도록 많이 노력해야겠어요!!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zexER/dJMcahiIiX5/oBpVO4qaaSpYtG0vMmynE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zexER/dJMcahiIiX5/oBpVO4qaaSpYtG0vMmynE0/img.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;162&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;60.77&quot; data-filename=&quot;blob&quot; style=&quot;width: 60.0681%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zexER/dJMcahiIiX5/oBpVO4qaaSpYtG0vMmynE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzexER%2FdJMcahiIiX5%2FoBpVO4qaaSpYtG0vMmynE0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;512&quot; height=&quot;162&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHaMNT/dJMcahiIiX6/cPFmV0YZqfb95lWPdvlpTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHaMNT/dJMcahiIiX6/cPFmV0YZqfb95lWPdvlpTk/img.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;251&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;39.23&quot; data-filename=&quot;blob&quot; style=&quot;width: 38.7691%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHaMNT/dJMcahiIiX6/cPFmV0YZqfb95lWPdvlpTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHaMNT%2FdJMcahiIiX6%2FcPFmV0YZqfb95lWPdvlpTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;512&quot; height=&quot;251&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d5b998/dJMcahiIiX7/g4GsREZzd1K7JmYl8bBK8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d5b998/dJMcahiIiX7/g4GsREZzd1K7JmYl8bBK8k/img.png&quot; data-origin-width=&quot;958&quot; data-origin-height=&quot;391&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;85.83&quot; data-filename=&quot;blob&quot; style=&quot;width: 84.8294%; margin-right: 10px; margin-top: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d5b998/dJMcahiIiX7/g4GsREZzd1K7JmYl8bBK8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd5b998%2FdJMcahiIiX7%2Fg4GsREZzd1K7JmYl8bBK8k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;958&quot; height=&quot;391&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/et519M/dJMcabW58oW/8D08DRgyyTv6nxmgQ2KCOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/et519M/dJMcabW58oW/8D08DRgyyTv6nxmgQ2KCOk/img.png&quot; data-origin-width=&quot;388&quot; data-origin-height=&quot;959&quot; data-is-animation=&quot;false&quot; style=&quot;width: 14.0078%; margin-top: 10px;&quot; data-widthpercent=&quot;14.17&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/et519M/dJMcabW58oW/8D08DRgyyTv6nxmgQ2KCOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fet519M%2FdJMcabW58oW%2F8D08DRgyyTv6nxmgQ2KCOk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;388&quot; height=&quot;959&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1763369786484&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스&quot; data-og-description=&quot;성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.&quot; data-og-host=&quot;fastcampus.co.kr&quot; data-og-source-url=&quot;https://fastcampus.info/4oKQD6b&quot; data-og-url=&quot;https://fastcampus.co.kr&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/by3hF3/hyZNN7BBpX/lk1dz6pIZOD0BeTnnxAa7k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/8qdE4/hyZNWcoQHA/v0MkKJiILLKMfxtPwEKDWk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/ck0yeT/hyZNNs0x5b/yiZjKaKZrqvrckFvkD0J21/img.png?width=3654&amp;amp;height=1350&amp;amp;face=0_0_3654_1350&quot;&gt;&lt;a href=&quot;https://fastcampus.info/4oKQD6b&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://fastcampus.info/4oKQD6b&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/by3hF3/hyZNN7BBpX/lk1dz6pIZOD0BeTnnxAa7k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/8qdE4/hyZNWcoQHA/v0MkKJiILLKMfxtPwEKDWk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/ck0yeT/hyZNNs0x5b/yiZjKaKZrqvrckFvkD0J21/img.png?width=3654&amp;amp;height=1350&amp;amp;face=0_0_3654_1350');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;fastcampus.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>RAG</category>
      <category>습관챌린지</category>
      <category>습관형성</category>
      <category>직장인자기계발</category>
      <category>패스트캠퍼스</category>
      <category>패스트캠퍼스후기</category>
      <category>환급챌린지</category>
      <author>Sssadie</author>
      <guid isPermaLink="true">https://sssadie.tistory.com/46</guid>
      <comments>https://sssadie.tistory.com/46#entry46comment</comments>
      <pubDate>Tue, 23 Dec 2025 21:03:15 +0900</pubDate>
    </item>
    <item>
      <title>패스트캠퍼스 환급챌린지 41일차 : 테디노트의 RAG 비법노트 강의 후기</title>
      <link>https://sssadie.tistory.com/45</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: center;&quot;&gt;본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #222222; text-align: center;&quot;&gt;작성하였습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;변수의 개념과 활용&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;변수&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;어떠한 데이터를 저장하는, 이름이 붙여진 공간&lt;/li&gt;
&lt;li&gt;컴퓨터의 메ㅐ모리에 저장 됨&lt;/li&gt;
&lt;li&gt;프로그래머가 정의하고, 값을 할당할 수 있음&lt;/li&gt;
&lt;li&gt;정해진 규칙으로 이름을 붙일 수 있음&lt;/li&gt;
&lt;li&gt;다양한 타입으로 저장되며, 타입에 맞는 연산을 수행할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;변수 in Python&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문자 또는 _로 시작해야 함(3.6 이상 한글 변수명 지원)&lt;/li&gt;
&lt;li&gt;특수문자(%, $, /, # 등) 및 공백은 사용할 수 없음&lt;/li&gt;
&lt;li&gt;대소문자가 구분 됨(myvariable &amp;lt;&amp;gt; myVariable)&lt;/li&gt;
&lt;li&gt;미리 정의된 단어들은 사용할 수 없음&lt;/li&gt;
&lt;li&gt;파이썬에서 변수는 값 자체를 담는 박스라기보다 메모리 상의 객체를 가리키는 이름&lt;/li&gt;
&lt;li&gt;같은 값을 여러 변수가 참조할 수 있음&lt;br /&gt;&amp;rarr; 이 개념은 리스트, 딕셔너리, 함수 인자 전달, 상태(State) 관리를 이해할 때 매우 중요&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;변수 선언/할당하기&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;타입을 지정하지 않음&lt;/li&gt;
&lt;li&gt;왼쪽에 변수, 오른쪽에 값, 등호(=)로 연결&lt;/li&gt;
&lt;li&gt;문자열은 홑따옴표(') 또는 쌍따옴표(&quot;)로 감싸서 할당&lt;/li&gt;
&lt;li&gt;할당된 변수를 다양하게 활용할 수 있음&lt;/li&gt;
&lt;li&gt;또한, 변수를 다른 변수에 할당하는 것도 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1766394195482&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;변수명&amp;gt;    &amp;lt;값&amp;gt;
age      =  20
name     = &quot;Mr.Yang&quot;
grade1_1 =  3.7
passExam =  True&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;재할당은 변수가 바뀐 것이 아니라 x가 가리키는 객체가 바뀜을 의미&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1766397121988&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;x = 10
x = 20&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 이전 값(10)은 더 이상 참조되지 않으면 가비지 컬렉션 대상&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;데이터 타입&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;숫자, Boolean(참 또는 거짓), 문자열 등&lt;/li&gt;
&lt;li&gt;Dynamic Typing - 자동으로 연결됨&lt;/li&gt;
&lt;li&gt;Type에 따라 사용할 수 있는 기능이 제&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;변수에 이름짓기&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;변수의 이름은 문맥에 맞게, 읽는 '사람'이 이해할 수 있도록&lt;/li&gt;
&lt;li&gt;한 글자나, 너무 긴 변수명은 피할 것&lt;/li&gt;
&lt;li&gt;단수와 복수를 구분해서 명명&lt;/li&gt;
&lt;li&gt;'카멜 케이스(camelCase)'와 '스네이크 케이스(snake_case)'를 통한 표기 &amp;rarr; 혼용하지 말것&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size18&quot;&gt;변수의 생명주기&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정의된 변수는 정해진 생명주기(Life Cycle)을 가짐&lt;/li&gt;
&lt;li&gt;변수의 선언과 초기화 : 변수를 선언하거나, 초기화 하는 순간 메모리에 할당됨&lt;/li&gt;
&lt;li&gt;변수 존재 : 선언된 이후 유효한 범위(Scope)에서 사용 가능&lt;/li&gt;
&lt;li&gt;변수 파괴 : 더 이상 사용되지 않으면 파괴(함수의 종료, 새로운 값의 할당, 변수의 삭제)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;프로그래밍 관련 강의를 들을 때, 강사님이 강조하시던 내용이 '변수' 였습니다. 변수는 어떤 데이터를 저장하기 위해 이름을 붙여둔 공간으로, 실제로는 컴퓨터 메모리에 값이 저장되고 변수명은 그 값을 가리키는 역할을 합니다. 즉, 변수는 단순한 값 자체가 아니라 값을 참조하기 위한 이름이라는 점이 중요합니다. 파이썬에서 변수는 타입을 미리 지정하지 않고, 등호(=)를 사용해 값을 할당합니다. 숫자, 문자열, Boolean 등 다양한 타입의 데이터를 저장할 수 있으며, 파이썬은 동적 타이핑 언어이기 때문에 할당되는 값에 따라 자동으로 타입이 결정됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;변수 이름에는 몇 가지 규칙이 있는데, 문자나 밑줄(_)로 시작해야 하며, 특수문자나 공백은 사용할 수 없습니다. 대소문자를 구분하고, 파이썬에서 이미 예약된 키워드는 변수명으로 사용할 수 없습니다. 이러한 규칙보다 더 중요한 것은 사람이 읽기 쉬운 이름을 짓는 것 입니다. 현업에서 가장 강조하는 내용은 '변수는 컴퓨터를 위한 것이 아니라, 나와 팀원을 위한 약속'이라는 것입니다. 그만큼 변수명은 코드의 의미를 설명하는 역할을 하기 때문에, 문맥에 맞고 의도가 드러나도록 작성하는 것이 중요합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;오늘 학습을 통해 변수는 단순히 값을 저장하는 도구가 아니라 프로그램의 흐름과 의미를 연결하는 핵심 요소라는 것을 알 수 있었습니다. 단순히 나만 알아보기 쉽게 작성하는 것이 아니라, 다른 팀원들이 봤을 때 이해 할 수 있는 변수명을 설정하는 것이 핵심입니다. 특히 앞으로 AI, RAG, LLM 시스템을 구현할 때 변수 하나하나가 데이터의 역할과 책임을 명확히 드러내는 역할을 하게 될 것이기 때문에, 기초 단계부터 올바른 변수 사용 습관을 들여야겠습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bA5t60/dJMcagqyQwu/RbvkMyXejNYpGNlPU2Jdbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bA5t60/dJMcagqyQwu/RbvkMyXejNYpGNlPU2Jdbk/img.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;329&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;42.58&quot; data-filename=&quot;blob&quot; style=&quot;width: 42.0877%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bA5t60/dJMcagqyQwu/RbvkMyXejNYpGNlPU2Jdbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbA5t60%2FdJMcagqyQwu%2FRbvkMyXejNYpGNlPU2Jdbk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;512&quot; height=&quot;329&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XLrLL/dJMcabbIHhP/kHWy6TJL7AU7kG4oY8Q2d1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XLrLL/dJMcabbIHhP/kHWy6TJL7AU7kG4oY8Q2d1/img.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;244&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;57.42&quot; data-filename=&quot;blob&quot; style=&quot;width: 56.7495%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XLrLL/dJMcabbIHhP/kHWy6TJL7AU7kG4oY8Q2d1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXLrLL%2FdJMcabbIHhP%2FkHWy6TJL7AU7kG4oY8Q2d1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;512&quot; height=&quot;244&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cGuAHc/dJMcadAyBOw/vOzsH2loWeyu2474zEDYu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cGuAHc/dJMcadAyBOw/vOzsH2loWeyu2474zEDYu0/img.png&quot; data-origin-width=&quot;929&quot; data-origin-height=&quot;434&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;84.15&quot; data-filename=&quot;blob&quot; style=&quot;width: 83.1734%; margin-right: 10px; margin-top: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cGuAHc/dJMcadAyBOw/vOzsH2loWeyu2474zEDYu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGuAHc%2FdJMcadAyBOw%2FvOzsH2loWeyu2474zEDYu0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;929&quot; height=&quot;434&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bluZju/dJMcacPeuAI/VCOIX6bp7e9E938yyQ9xR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bluZju/dJMcacPeuAI/VCOIX6bp7e9E938yyQ9xR0/img.png&quot; data-origin-width=&quot;387&quot; data-origin-height=&quot;960&quot; data-is-animation=&quot;false&quot; style=&quot;width: 15.6638%; margin-top: 10px;&quot; data-widthpercent=&quot;15.85&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bluZju/dJMcacPeuAI/VCOIX6bp7e9E938yyQ9xR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbluZju%2FdJMcacPeuAI%2FVCOIX6bp7e9E938yyQ9xR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;387&quot; height=&quot;960&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1763369786484&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스&quot; data-og-description=&quot;성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.&quot; data-og-host=&quot;fastcampus.co.kr&quot; data-og-source-url=&quot;https://fastcampus.info/4oKQD6b&quot; data-og-url=&quot;https://fastcampus.co.kr&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/by3hF3/hyZNN7BBpX/lk1dz6pIZOD0BeTnnxAa7k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/8qdE4/hyZNWcoQHA/v0MkKJiILLKMfxtPwEKDWk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/ck0yeT/hyZNNs0x5b/yiZjKaKZrqvrckFvkD0J21/img.png?width=3654&amp;amp;height=1350&amp;amp;face=0_0_3654_1350&quot;&gt;&lt;a href=&quot;https://fastcampus.info/4oKQD6b&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://fastcampus.info/4oKQD6b&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/by3hF3/hyZNN7BBpX/lk1dz6pIZOD0BeTnnxAa7k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/8qdE4/hyZNWcoQHA/v0MkKJiILLKMfxtPwEKDWk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/ck0yeT/hyZNNs0x5b/yiZjKaKZrqvrckFvkD0J21/img.png?width=3654&amp;amp;height=1350&amp;amp;face=0_0_3654_1350');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;fastcampus.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>RAG</category>
      <category>습관챌린지</category>
      <category>습관형성</category>
      <category>직장인자기계발</category>
      <category>패스트캠퍼스</category>
      <category>패스트캠퍼스후기</category>
      <category>환급챌린지</category>
      <author>Sssadie</author>
      <guid isPermaLink="true">https://sssadie.tistory.com/45</guid>
      <comments>https://sssadie.tistory.com/45#entry45comment</comments>
      <pubDate>Mon, 22 Dec 2025 19:01:52 +0900</pubDate>
    </item>
  </channel>
</rss>