<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>빛나는 호랑이님의 서식지 </title>
    <link>https://lsjking911.tistory.com/</link>
    <description>lsjking911 님의 블로그 입니다.</description>
    <language>ko</language>
    <pubDate>Sat, 11 Jul 2026 05:02:30 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>lsjking911</managingEditor>
    <image>
      <title>빛나는 호랑이님의 서식지 </title>
      <url>https://tistory1.daumcdn.net/tistory/7841617/attach/7fde2eff1a7841fda845127bdc09c03e</url>
      <link>https://lsjking911.tistory.com</link>
    </image>
    <item>
      <title>인터렉션 확장</title>
      <link>https://lsjking911.tistory.com/61</link>
      <description>&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;눈 추적 시스템까지 구현하면서 하나 분명해졌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 시스템은 단순히 데이터를 보여주는 것이 아니라&lt;br /&gt;이미 &amp;ldquo;사용자와 상호작용하는 구조&amp;rdquo;로 넘어왔다는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면 다음 질문은 자연스럽게 이어진다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;사용자가 특정 대상을 선택하고, 시스템이 그 상태를 유지할 수 있을까?&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 질문에서 시작된 것이 바로&lt;br /&gt;&lt;b&gt;타겟 선택 및 UI 인터랙션 시스템&lt;/b&gt;이다.&lt;/p&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;h1&gt; ️ 클릭 기반 타겟 선택 시스템&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;눈 추적만으로는 사용자가 무엇을 보고 있는지 완전히 판단하기 어렵다.&lt;br /&gt;그래서 선택 기능은 의도적으로 &amp;ldquo;수동 입력&amp;rdquo;으로 설계했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 화면을 클릭하면&lt;br /&gt;그 위치와 가장 가까운 객체를 선택하도록 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 과정에서 중요한 것은 단순 선택이 아니라&lt;br /&gt;&lt;b&gt;상태(state)를 가진 선택 구조&lt;/b&gt;를 만드는 것이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 다음과 같은 상태 구조를 설계했다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;1번째 클릭 &amp;rarr; TRACKING
2번째 클릭 &amp;rarr; LOCKED
3번째 클릭 &amp;rarr; 제거
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 구조는 여러 번 테스트 끝에 정해졌는데,&lt;br /&gt;생각보다 중요한 UX적인 의미를 가진다.&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;사용자가 명확하게 &amp;ldquo;락(lock)&amp;rdquo;을 의도할 수 있다&lt;/li&gt;
&lt;li&gt;현재 상태를 직관적으로 이해할 수 있다&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 단순한 토글이 아니라&lt;br /&gt;&lt;b&gt;단계형 인터랙션 설계&lt;/b&gt;다.&lt;/p&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;h1&gt;  멀티 타겟 구조&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 하나의 타겟만 선택하도록 구현했지만&lt;br /&gt;곧 한계를 느꼈다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;여러 개를 동시에 선택할 수 있어야 한다&amp;rdquo;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 구조를 다음처럼 바꿨다.&lt;/p&gt;
&lt;pre class=&quot;cmake&quot;&gt;&lt;code&gt;target 하나 &amp;rarr; list 구조
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 변경은 단순해 보이지만&lt;br /&gt;시스템 구조를 완전히 바꿔버린다.&lt;/p&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;개별적으로 LOCK / 해제&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 시스템은 단순 UI에서 벗어나&lt;br /&gt;&lt;b&gt;복수 객체를 관리하는 인터페이스&lt;/b&gt;가 된다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h1&gt;  타겟 추적 (Tracking)&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;초기 구현에서는 문제가 하나 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;타겟을 선택하면&lt;br /&gt;그 위치에 HUD가 &amp;ldquo;고정&amp;rdquo;되어 버렸다.&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;br /&gt;타겟을 &amp;ldquo;좌표&amp;rdquo;가 아니라 &amp;ldquo;대상&amp;rdquo;으로 정의했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 매 프레임마다 다음 작업을 수행한다.&lt;/p&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;이전 타겟 중심 &amp;rarr; 현재 detection 중 가장 가까운 객체 찾기
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 방식으로&lt;br /&gt;HUD는 항상 실제 객체를 따라 움직이게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과적으로 시스템은 다음 단계로 진화했다.&lt;/p&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;고정 UI &amp;rarr; 동적 추적 UI&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;h1&gt;  상태 기반 UI 설계 (TRACKING / LOCKED)&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 프로젝트의 핵심 중 하나는&lt;br /&gt;&lt;b&gt;상태를 시각적으로 표현하는 것&lt;/b&gt;이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 단순히 &amp;ldquo;텍스트&amp;rdquo;만 바꾸는 게 아니라&lt;br /&gt;UI 전체가 상태를 반영하도록 설계했다.&lt;/p&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ TRACKING 상태&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HUD 색상: 주황색&lt;/li&gt;
&lt;li&gt;텍스트: TRACKING&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;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ LOCKED 상태&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HUD 색상: 빨간색&lt;/li&gt;
&lt;li&gt;텍스트: LOCKED&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;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 설계의 핵심은 이것이다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;상태를 읽지 않아도, 보면 바로 이해되게 만든다&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;텍스트는 보조 정보일 뿐&lt;br /&gt;핵심은 &lt;b&gt;색과 형태의 변화&lt;/b&gt;다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h1&gt;  HUD 시스템 구현&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;객체를 시각화하기 위해&lt;br /&gt;단순 박스 이상의 표현이 필요했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 원형 HUD를 구성했다.&lt;/p&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;li&gt;십자선 (crosshair)&lt;/li&gt;
&lt;li&gt;중앙 텍스트&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 구조는 단순하지만&lt;br /&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;ldquo;중심을 기준으로 모든 요소를 정렬한다&amp;rdquo;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이로 인해 사용자는 자연스럽게&lt;br /&gt;HUD의 중심에 시선을 두게 된다.&lt;/p&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;h1&gt;  크기 반응형 UI&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HUD의 크기도 고정이 아니라&lt;br /&gt;객체 크기에 따라 자동으로 변하도록 만들었다.&lt;/p&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;작은 객체 &amp;rarr; 작은 HUD
큰 객체 &amp;rarr; 큰 HUD
&lt;/code&gt;&lt;/pre&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;그래서 아래 조건을 추가했다.&lt;/p&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;최소 크기 제한 + 최대 크기 제한
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 결과 UI는 다음 특징을 갖게 된다.&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;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;h1&gt;  시스템 구조 변화&lt;/h1&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;pre class=&quot;&quot;&gt;&lt;code&gt;카메라 &amp;rarr; AI &amp;rarr; 결과 출력
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금:&lt;/p&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;카메라 &amp;rarr; AI &amp;rarr; 서버 &amp;rarr; 웹 &amp;rarr; UI &amp;rarr; 사용자 입력 &amp;rarr; 상태 변화 &amp;rarr; 다시 AI 반영
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이건 단순 파이프라인이 아니라&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;피드백 루프 시스템&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이다.&lt;/p&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;h1&gt;  이번 단계에서 얻은 핵심 깨달음&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 단계에서 가장 중요했던 포인트는 이것 하나다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;AI는 시작일 뿐이고, 실제 어려운 건 인터랙션이다&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&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;p data-ke-size=&quot;size16&quot;&gt;이런 문제들이 더 중요해졌다.&lt;/p&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;h1&gt;✅ 현재 상태 (이번 단계 기준)&lt;/h1&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;li&gt;멀티 타겟 지원&lt;/li&gt;
&lt;li&gt;객체 추적&lt;/li&gt;
&lt;li&gt;상태 기반 UI (TRACKING / LOCKED)&lt;/li&gt;
&lt;li&gt;HUD 시각화 시스템&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉,&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;AI 기반 객체 추적 + 인터랙티브 HUD 시스템&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;h1&gt;  다음 단계 &amp;ndash; 진짜 자동화로&lt;/h1&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;pre class=&quot;cos&quot;&gt;&lt;code&gt;눈 &amp;rarr; 시선 방향 &amp;rarr; 자동 선택 &amp;rarr; LOCK
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉,&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;사용자가 보는 대상을 시스템이 먼저 선택하는 단계&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 단계에 도달하면&lt;br /&gt;진짜 JARVIS에 가까워진다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;div&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;이 프로젝트를 진행하면서 느낀 가장 큰 변화는 이 프로젝트를 진행하면서 문제를 바라보는 관점이었다.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;앞으로는 단순히 기능을 하나씩 구현하는 것을 넘어,&amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;전체 구조를 먼저 설계하고 그 위에 필요한 기술을 쌓아가는&amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;탑다운(top-down) 방식으로 접근해보려고 한다.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;물론, 기본적인 개념과 기초 지식을 탄탄하게 다지는 과정 또한&amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;함께 병행할 계획이다.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;결국 중요한 것은&amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;설계 중심으로 접근하되, 기본기를 놓치지 않는 것이다.&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;</description>
      <category>자비스</category>
      <author>lsjking911</author>
      <guid isPermaLink="true">https://lsjking911.tistory.com/61</guid>
      <comments>https://lsjking911.tistory.com/61#entry61comment</comments>
      <pubDate>Sun, 7 Jun 2026 14:39:05 +0900</pubDate>
    </item>
    <item>
      <title>카메라 기반 AI 눈 추적 시스템 환경구축</title>
      <link>https://lsjking911.tistory.com/60</link>
      <description>&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 프로젝트는 단순히 AI를 실행해보는 것에서 시작하지 않았다.&lt;br /&gt;처음 떠올린 아이디어는 하나였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;아이언맨의 JARVIS처럼, 사용자를 인식하고 반응하는 시스템을 만들어보자.&amp;rdquo;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 목표는 자연스럽게 정해졌다.&lt;br /&gt;카메라를 통해 사용자를 인식하고, 그 결과를 실시간으로 시각화하는 시스템을 만드는 것이다.&lt;/p&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  개발의 시작 &amp;ndash; 객체 인식부터&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 접근은 가장 단순했다.&lt;br /&gt;카메라로 입력을 받아서 AI가 무엇을 인식하는지 확인하는 것이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 가장 먼저 선택한 기술은 YOLO였다.&lt;br /&gt;YOLO는 실시간 객체 인식에 강점이 있기 때문이다.&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;rarr; 객체 인식 &amp;rarr; 콘솔 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 단계에서는 단순히 &amp;ldquo;사람이 보인다&amp;rdquo;, &amp;ldquo;노트북이 보인다&amp;rdquo; 정도의 정보만 확인할 수 있었다.&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;ldquo;이걸 화면에 보여주지 않으면 의미가 없다.&amp;rdquo;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  웹과 연결 &amp;ndash; 단순 AI에서 시스템으로&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 다음 단계는 AI 결과를 웹으로 전달하는 것이었다.&lt;br /&gt;이때 Flask를 선택했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Flask를 이용해서 Python에서 생성된 결과를 JSON 형태로 보내고,&lt;br /&gt;웹에서 JavaScript로 받아서 표시하는 구조를 만들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 단계에서 구조는 이렇게 바뀐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Python &amp;rarr; Flask &amp;rarr; JSON &amp;rarr; JavaScript &amp;rarr; 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;브라우저에서 API 요청이 막혀버린 것이다.&lt;/p&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;⚠️ 첫 번째 문제 &amp;ndash; CORS 에러&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹에서 Python 서버로 요청을 보내자,&lt;br /&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;이 문제를 해결하기 위해 CORS를 도입했다.&lt;br /&gt;Flask에 CORS 설정을 추가하자마자 문제가 해결되었다.&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;ldquo;웹과 연결되는 순간부터는 AI 문제가 아니라 웹 시스템 문제가 된다.&amp;rdquo;&lt;/p&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  영상 스트리밍 &amp;ndash; 진짜 실시간 시스템 만들기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 목표는 명확했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;텍스트가 아니라 &amp;ldquo;영상 자체&amp;rdquo;를 웹에 띄우는 것.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Flask에서 영상 스트리밍 API를 만들고,&lt;br /&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;영상이 전혀 나오지 않았다.&lt;/p&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;⚠️ 두 번째 문제 &amp;ndash; 화면이 안 나옴&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원인은 의외로 간단했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;영상 URL을 그냥 넣어두고 HTML에서 출력하지 않았던 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;브라우저는 URL을 보여줄 뿐,&lt;br /&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;이 단계에서 중요한 깨달음은 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;AI 문제가 아니라, 브라우저 동작 원리를 이해해야 한다.&amp;rdquo;&lt;/p&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  다음 단계 &amp;ndash; 눈을 따라가는 시스템&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;객체 인식까지는 성공했지만,&lt;br /&gt;여기에서 한 단계 더 나아가고 싶었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;사용자의 시선을 따라가는 시스템을 만들 수 있을까?&amp;rdquo;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 질문이 다음 개발 방향을 결정했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;YOLO는 눈 추적이 불가능하므로&lt;br /&gt;새로운 기술이 필요했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 선택한 것이 MediaPipe였다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;⚠️ 세 번째 문제 &amp;ndash; MediaPipe 오류&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MediaPipe를 설치하고 사용할 때&lt;br /&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;이건 단순한 코드 문제가 아니라&lt;br /&gt;라이브러리 버전 문제였다.&lt;/p&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  해결 &amp;ndash; 버전 다운그레이드&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 최신 버전을 사용하고 싶었지만,&lt;br /&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;최신 버전은 안정적인 환경이 아니었다.&lt;br /&gt;Windows 환경에서 특히 문제가 많았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반면 특정 이전 버전은&lt;br /&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;ldquo;최신 버전이 항상 좋은 것은 아니다.&lt;br /&gt;실제로는 안정된 버전이 더 중요하다.&amp;rdquo;&lt;/p&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt; ️ 눈 추적 구현&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MediaPipe를 이용하면 얼굴의 수많은 landmark를 얻을 수 있다.&lt;br /&gt;그 중 눈 위치를 계산해서 좌표를 만들고,&lt;br /&gt;이 값을 웹에 전달하도록 만들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 웹에서는 이 좌표를 기반으로&lt;br /&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;rarr; AI &amp;rarr; 웹 &amp;rarr; 사용자 반응&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순한 분석이 아니라&lt;br /&gt;&amp;ldquo;사용자와 상호작용하는 시스템&amp;rdquo;이 된 것이다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 현재 상태&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금까지 구현된 기능은 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;카메라 영상이 실시간으로 웹에 표시된다&lt;br /&gt;AI가 얼굴을 인식하고 눈 위치를 추적한다&lt;br /&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;ldquo;실시간 영상 기반 눈 추적 시스템 + 웹 UI&amp;rdquo;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;⚠️ 아직 남은 한계&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 완벽한 상태는 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 시스템은 &amp;ldquo;눈 위치&amp;rdquo;만 추적한다.&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;br /&gt;눈의 방향(어디를 보는지)은 알 수 없다&lt;br /&gt;사용자가 무엇을 보고 있는지는 판단하지 못한다&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  앞으로 할 방향&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 다음 단계는 명확하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;눈 위치가 아니라 &amp;ldquo;시선 방향&amp;rdquo;을 계산해야 한다&lt;br /&gt;시선 방향을 기반으로 객체를 선택해야 한다&lt;br /&gt;선택된 대상에 대해 &amp;ldquo;타겟 락&amp;rdquo; 시스템을 만들어야 한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 단계가 완료되면&lt;br /&gt;단순한 AI가 아니라 실제 인터랙티브 시스템이 된다.&lt;/p&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  프로젝트의 본질&amp;nbsp;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 단순히 객체 인식을 해보고 싶어서 시작했다.&lt;br /&gt;하지만 개발을 진행하면서 이 프로젝트는 점점 방향이 바뀌기 시작했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순히 &amp;ldquo;무엇이 있는지 인식하는 것&amp;rdquo;에서 벗어나&lt;br /&gt;&amp;ldquo;사용자의 행동에 반응하는 시스템&amp;rdquo;을 만드는 방향으로 확장되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;객체 인식&lt;br /&gt;&amp;rarr; 웹 연결&lt;br /&gt;&amp;rarr; 영상 스트리밍&lt;br /&gt;&amp;rarr; 얼굴 인식&lt;br /&gt;&amp;rarr; 눈 추적&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 흐름은 단순한 기능 추가가 아니라,&lt;br /&gt;시스템의 본질 자체가 바뀌는 과정이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 이 프로젝트는 단순한 AI 실험이 아니라&lt;br /&gt;다음과 같은 구조를 가진 시스템으로 발전했다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;AI 모델을 실행하는 프로그램&amp;rdquo;이 아니라&lt;br /&gt;&lt;b&gt;&amp;ldquo;AI + 웹 + 영상 처리를 통합한 인터랙티브 시스템&amp;rdquo;&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✨ 마무리&amp;nbsp;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 프로젝트를 진행하며 가장 크게 느낀 점은 하나다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제는 항상 AI에서 발생하지 않는다.&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;br /&gt;브라우저 동작 방식&lt;br /&gt;네트워크 정책 (CORS)&lt;br /&gt;라이브러리 버전 충돌&lt;br /&gt;프레임 처리 방식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 모든 요소가 맞물려야&lt;br /&gt;비로소 하나의 시스템이 정상적으로 동작한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 중요한 것은&lt;br /&gt;&amp;ldquo;AI를 잘 쓰는 것&amp;rdquo;이 아니라&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;ldquo;AI를 포함한 전체 시스템을 이해하는 것&amp;rdquo;이다.&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  다음 단계 &amp;ndash; 진짜 JARVIS로 가는 길&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 단계에서는 눈의 &amp;ldquo;위치&amp;rdquo;만 추적할 수 있다.&lt;br /&gt;하지만 우리가 원하는 것은 여기서 끝이 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;진짜 JARVIS 시스템에 가까워지기 위해서는&lt;br /&gt;이 다음 단계로 넘어가야 한다.&lt;/p&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;눈의 위치가 아니라 **시선 방향(View Direction)**을 계산하기&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;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;눈 &amp;rarr; 방향 &amp;rarr; 대상 선택 &amp;rarr; 반응&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이라는 흐름을 만들어야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 글에서는 이 과정을 구현하면서&lt;br /&gt;실제로 &lt;b&gt;&amp;ldquo;사용자가 보는 대상&amp;rdquo;을 시스템이 인식하는 단계&lt;/b&gt;까지 확장해볼 예정이다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>자비스</category>
      <author>lsjking911</author>
      <guid isPermaLink="true">https://lsjking911.tistory.com/60</guid>
      <comments>https://lsjking911.tistory.com/60#entry60comment</comments>
      <pubDate>Sun, 7 Jun 2026 09:24:58 +0900</pubDate>
    </item>
    <item>
      <title>역피라미드 방법</title>
      <link>https://lsjking911.tistory.com/59</link>
      <description>&lt;div&gt;
&lt;h1&gt;✅ ✅ 결론 (핵심 한 줄)&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;별이랑 공백은 그대로지만, i가 바뀌면서 &amp;ldquo;개수&amp;rdquo;가 바뀌기 때문이다&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;✅ ✅ 핵심 개념 먼저&lt;/h1&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-testid=&quot;ComponentFluentProviderId&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1780233552006&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;공백 = floor - 1
별   = 2*i + 1&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  이건 그대로인데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;    &lt;b&gt;i 값이 어떻게 움직이느냐가 핵심&lt;/b&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;✅ ✅ 비교해서 이해&lt;/h1&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 피라미드 (i 증가)&lt;/h2&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;i: 0 &amp;rarr; 1 &amp;rarr; 2 &amp;rarr; 3 &amp;rarr; 4
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  계산:&lt;/p&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 85px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;i&lt;/td&gt;
&lt;td&gt;공백&lt;/td&gt;
&lt;td&gt;별&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;9&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  결과:&lt;/p&gt;
&lt;pre class=&quot;markdown&quot;&gt;&lt;code&gt;    *
   ***
  *****
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  ✅ 점점 커짐&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 역피라미드 (i 감소)&lt;/h2&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;i: 4 &amp;rarr; 3 &amp;rarr; 2 &amp;rarr; 1 &amp;rarr; 0
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  계산:&lt;/p&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;i&lt;/td&gt;
&lt;td&gt;공백&lt;/td&gt;
&lt;td&gt;별&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  결과:&lt;/p&gt;
&lt;pre class=&quot;markdown&quot;&gt;&lt;code&gt;*********
 *******
  *****
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  ✅ 점점 작아짐&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;✅ ✅ 핵심 깨달음&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  코드 같은데 결과 다른 이유:&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;❗ &lt;b&gt;공식이 아니라 &amp;ldquo;i 값의 흐름&amp;rdquo;이 바뀌어서&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;✅ ✅ 진짜 중요한 부분&lt;/h1&gt;
&lt;pre class=&quot;matlab&quot;&gt;&lt;code&gt;공백/별 공식 ❌ 안 바뀜
i 값 흐름 ✅ 바뀜
&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;style1&quot; /&gt;
&lt;h1&gt;✅ ✅ 그래서 이렇게 된다&lt;/h1&gt;
&lt;pre class=&quot;matlab&quot;&gt;&lt;code&gt;i 증가 &amp;rarr; 별 증가 &amp;rarr; 피라미드 ✅
i 감소 &amp;rarr; 별 감소 &amp;rarr; 역피라미드 ✅
&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;style1&quot; /&gt;
&lt;h1&gt;✅ ✅ 진짜 핵심 한 줄&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;모양은 공식이 아니라 &amp;ldquo;i가 어떤 순서로 변하느냐&amp;rdquo;에 의해 결정된다&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;✅ ✅ 초직관 감각&lt;/h1&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;공식 = 공백/별 몇 개 찍을지 계산
i = 현재 몇 번째 줄인지(입력값)

&amp;rarr; 입력값 순서 바꾸면 결과 모양도 바뀜&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;style1&quot; /&gt;
&lt;h1&gt;  완전 쉽게 말하면&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  너가 한 건 이거임:&lt;/p&gt;
&lt;pre class=&quot;matlab&quot;&gt;&lt;code&gt;같은 공식에
다른 i 순서를 넣은 것
&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;style1&quot; /&gt;
&lt;h1&gt;✅ ✅ 최종 정리&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;✅ 별/공백은 그대로다&lt;br /&gt;✅ 하지만 i 순서가 바뀌면&lt;br /&gt;  결과 모양은 완전히 달라진다&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;</description>
      <category>c언어</category>
      <author>lsjking911</author>
      <guid isPermaLink="true">https://lsjking911.tistory.com/59</guid>
      <comments>https://lsjking911.tistory.com/59#entry59comment</comments>
      <pubDate>Mon, 1 Jun 2026 00:01:43 +0900</pubDate>
    </item>
    <item>
      <title>역피라미드 방법</title>
      <link>https://lsjking911.tistory.com/58</link>
      <description>&lt;div&gt;
&lt;h1&gt;✅ ✅ 결론 (핵심 한 줄)&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;별이랑 공백은 그대로지만, i가 바뀌면서 &amp;ldquo;개수&amp;rdquo;가 바뀌기 때문이다&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;✅ ✅ 핵심 개념 먼저&lt;/h1&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-testid=&quot;ComponentFluentProviderId&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1780233552006&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;공백 = floor - 1
별   = 2*i + 1&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  이건 그대로인데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;    &lt;b&gt;i 값이 어떻게 움직이느냐가 핵심&lt;/b&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;✅ ✅ 비교해서 이해&lt;/h1&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 피라미드 (i 증가)&lt;/h2&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;i: 0 &amp;rarr; 1 &amp;rarr; 2 &amp;rarr; 3 &amp;rarr; 4
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  계산:&lt;/p&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 85px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;i&lt;/td&gt;
&lt;td&gt;공백&lt;/td&gt;
&lt;td&gt;별&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;9&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  결과:&lt;/p&gt;
&lt;pre class=&quot;markdown&quot;&gt;&lt;code&gt;    *
   ***
  *****
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  ✅ 점점 커짐&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 역피라미드 (i 감소)&lt;/h2&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;i: 4 &amp;rarr; 3 &amp;rarr; 2 &amp;rarr; 1 &amp;rarr; 0
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  계산:&lt;/p&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;i&lt;/td&gt;
&lt;td&gt;공백&lt;/td&gt;
&lt;td&gt;별&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  결과:&lt;/p&gt;
&lt;pre class=&quot;markdown&quot;&gt;&lt;code&gt;*********
 *******
  *****
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  ✅ 점점 작아짐&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;✅ ✅ 핵심 깨달음&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  코드 같은데 결과 다른 이유:&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;❗ &lt;b&gt;공식이 아니라 &amp;ldquo;i 값의 흐름&amp;rdquo;이 바뀌어서&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;✅ ✅ 진짜 중요한 부분&lt;/h1&gt;
&lt;pre class=&quot;matlab&quot;&gt;&lt;code&gt;공백/별 공식 ❌ 안 바뀜
i 값 흐름 ✅ 바뀜
&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;style1&quot; /&gt;
&lt;h1&gt;✅ ✅ 그래서 이렇게 된다&lt;/h1&gt;
&lt;pre class=&quot;matlab&quot;&gt;&lt;code&gt;i 증가 &amp;rarr; 별 증가 &amp;rarr; 피라미드 ✅
i 감소 &amp;rarr; 별 감소 &amp;rarr; 역피라미드 ✅
&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;style1&quot; /&gt;
&lt;h1&gt;✅ ✅ 진짜 핵심 한 줄&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;모양은 공식이 아니라 &amp;ldquo;i가 어떤 순서로 변하느냐&amp;rdquo;에 의해 결정된다&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;✅ ✅ 초직관 감각&lt;/h1&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;공식 = 공백/별 몇 개 찍을지 계산
i = 현재 몇 번째 줄인지(입력값)

&amp;rarr; 입력값 순서 바꾸면 결과 모양도 바뀜&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;style1&quot; /&gt;
&lt;h1&gt;  완전 쉽게 말하면&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  너가 한 건 이거임:&lt;/p&gt;
&lt;pre class=&quot;matlab&quot;&gt;&lt;code&gt;같은 공식에
다른 i 순서를 넣은 것
&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;style1&quot; /&gt;
&lt;h1&gt;✅ ✅ 최종 정리&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;✅ 별/공백은 그대로다&lt;br /&gt;✅ 하지만 i 순서가 바뀌면&lt;br /&gt;  결과 모양은 완전히 달라진다&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;</description>
      <category>c언어</category>
      <author>lsjking911</author>
      <guid isPermaLink="true">https://lsjking911.tistory.com/58</guid>
      <comments>https://lsjking911.tistory.com/58#entry58comment</comments>
      <pubDate>Sun, 31 May 2026 22:34:17 +0900</pubDate>
    </item>
    <item>
      <title>피라미드 쌓기 프로젝트</title>
      <link>https://lsjking911.tistory.com/57</link>
      <description>&lt;div&gt;
&lt;h1 style=&quot;color: #000000;&quot;&gt;피라미드 예시 출력 (floor = 5)&lt;/h1&gt;
&lt;pre style=&quot;background-color: #f8f8f8; color: #383a42;&quot;&gt;&lt;code&gt;    *
   ***
  *****
 *******
*********&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>c언어</category>
      <author>lsjking911</author>
      <guid isPermaLink="true">https://lsjking911.tistory.com/57</guid>
      <comments>https://lsjking911.tistory.com/57#entry57comment</comments>
      <pubDate>Sun, 31 May 2026 22:13:41 +0900</pubDate>
    </item>
    <item>
      <title>조건에서 깨달은 핵심</title>
      <link>https://lsjking911.tistory.com/54</link>
      <description>&lt;div&gt;
&lt;h1&gt;✅ ✅ 핵심 개념&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;for문의 조건은 &amp;ldquo;어디까지&amp;rdquo;가 아니라 &amp;ldquo;몇 번 반복할지&amp;rdquo;를 결정하는 것이다&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 기존 생각 (잘못된 이해)&lt;/h2&gt;
&lt;pre class=&quot;fix&quot;&gt;&lt;code&gt;조건 = 어디까지 반복할까?
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  ❌ 단순 범위로만 생각&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 깨달은 개념&lt;/h2&gt;
&lt;pre class=&quot;fix&quot;&gt;&lt;code&gt;조건 = 몇 개 반복할까?
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  ✅ 반복 횟수 자체를 결정하는 공식&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h1&gt;✅ ✅ 예시 비교&lt;/h1&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;❌ 단순 조건 (고정)&lt;/h2&gt;
&lt;pre id=&quot;code_1780226717138&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for(int k=0; k&amp;lt;5; k++)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  결과:&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;항상 5번 반복 ❌&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 변화 반영 조건&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-testid=&quot;ComponentFluentProviderId&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-overflow-item=&quot;&quot;&gt;
&lt;div id=&quot;language-badge&quot;&gt;
&lt;pre id=&quot;code_1780226743844&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for(int k=0; k&amp;lt;i; k++)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-fluid-id=&quot;E&quot;&gt;
&lt;div style=&quot;text-align: left;&quot; contenteditable=&quot;false&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  결과:&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;i=1 &amp;rarr; 1번
i=2 &amp;rarr; 2번
i=3 &amp;rarr; 3번
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  ✅ 줄마다 변화&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 수식 활용&lt;/h2&gt;
&lt;pre id=&quot;code_1780226778788&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for(int k=0; k&amp;lt;i*2+1; k++)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  결과:&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;i=0 &amp;rarr; 1개
i=1 &amp;rarr; 3개
i=2 &amp;rarr; 5개
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  ✅ 규칙 있는 패턴 생성&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;✅ ✅ 핵심 원리&lt;/h1&gt;
&lt;pre class=&quot;fix&quot;&gt;&lt;code&gt;반복 횟수 = 조건식
&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;k &amp;lt; 5 &amp;rarr; 5번&lt;/li&gt;
&lt;li&gt;k &amp;lt; i &amp;rarr; i번&lt;/li&gt;
&lt;li&gt;k &amp;lt; i*2+1 &amp;rarr; 홀수 증가&lt;/li&gt;
&lt;li&gt;k &amp;lt; floor-i &amp;rarr; 점점 감소&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;✅ ✅ 최종 핵심 한 줄&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;div&gt;  &lt;b&gt;즉, for문의 조건은 반복의 범위를 정하는 것이 아니라, 반복 횟수를 계산하는 식이며, i를 이용해 변화하는 패턴을 만들 수 있다&lt;/b&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;h1&gt;  초간단 감각&lt;/h1&gt;
&lt;pre class=&quot;fix&quot;&gt;&lt;code&gt;조건 = 몇 개 찍을지 공식&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</description>
      <category>c언어</category>
      <author>lsjking911</author>
      <guid isPermaLink="true">https://lsjking911.tistory.com/54</guid>
      <comments>https://lsjking911.tistory.com/54#entry54comment</comments>
      <pubDate>Sun, 31 May 2026 20:30:37 +0900</pubDate>
    </item>
    <item>
      <title>이중 반복문 핵심 깨달음 정리</title>
      <link>https://lsjking911.tistory.com/53</link>
      <description>&lt;div&gt;
&lt;h1&gt;✅ ✅ 1. 가장 중요한 깨달음&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;for문은 반복할 때마다 초기값부터 다시 시작한다&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 예시&lt;/h2&gt;
&lt;pre id=&quot;code_1780220770305&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for(int j=5; j&amp;gt;=1; j--){
    printf(&quot;-&quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  실행 방식:&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;i=1 &amp;rarr; j=5부터 시작 &amp;rarr; 5번 반복  
i=2 &amp;rarr; j=다시 5부터 시작 &amp;rarr; 5번 반복  
i=3 &amp;rarr; j=다시 5부터 시작 &amp;rarr; 5번 반복
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  결과:&lt;/p&gt;
&lt;pre class=&quot;asciidoc&quot;&gt;&lt;code&gt;-----
-----
-----
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  ❗ 항상 같은 결과&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h1&gt;✅ ✅ 2. 처음 오해했던 부분&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 이렇게 생각하기 쉬움:&lt;/p&gt;
&lt;pre class=&quot;matlab&quot;&gt;&lt;code&gt;&amp;ldquo;j가 줄마다 이어질 것이다&amp;rdquo;
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  ❌ 틀린 생각&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 실제 동작&lt;/h2&gt;
&lt;pre class=&quot;matlab&quot;&gt;&lt;code&gt;j는 매 줄마다 새로 생성됨 ✅
&amp;rarr; 이전 값은 이어지지 않음&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;h1&gt;✅ ✅ 3. 그래서 문제의 진짜 원인&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;❗ 문제가 &amp;ldquo;초기화&amp;rdquo; 자체가 아니라&lt;br /&gt;  &lt;b&gt;조건이 항상 동일했던 것&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;❌ 잘못된 조건&lt;/h2&gt;
&lt;pre id=&quot;code_1780220884800&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;j &amp;gt;= 1&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-testid=&quot;ComponentFluentProviderId&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-overflow-item=&quot;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-overflow-item=&quot;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-overflow-item=&quot;&quot;&gt;
&lt;div id=&quot;language-badge&quot;&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  특징:&lt;/p&gt;
&lt;pre class=&quot;matlab&quot;&gt;&lt;code&gt;i가 바뀌어도 조건 동일
&amp;rarr; 반복 횟수 항상 같음
&amp;rarr; 변화 없음 ❌
&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;style1&quot; /&gt;
&lt;h1&gt;✅ ✅ 4. 해결 방법&lt;/h1&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;pre id=&quot;code_1780220917384&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for(int j=5; j&amp;gt;=i; j--){
    printf(&quot;-&quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 실행 결과&lt;/h2&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;i=1 &amp;rarr; 5개
i=2 &amp;rarr; 4개
i=3 &amp;rarr; 3개
i=4 &amp;rarr; 2개
i=5 &amp;rarr; 1개
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  ✅ 줄마다 달라짐&lt;/p&gt;
&lt;h1&gt;✅ ✅ 5. 핵심 원리&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;for문은 매번 초기화되기 때문에 변화는 조건에서 만들어야 한다&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;✅ ✅ 6. 핵심 구조 이해&lt;/h1&gt;
&lt;pre class=&quot;gcode&quot;&gt;&lt;code&gt;초기값 &amp;rarr; 항상 같은 시작점  
조건   &amp;rarr; 반복 횟수 결정 (여기서 변화 발생)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 비교&lt;/h2&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;요소&lt;/td&gt;
&lt;td&gt;역할&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;초기값&lt;/td&gt;
&lt;td&gt;시작 위치 (고정)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;조건식&lt;/td&gt;
&lt;td&gt;반복 횟수 (변화 만드는 핵심)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h1&gt;✅ ✅ 7. 진짜 핵심 공식&lt;/h1&gt;
&lt;pre class=&quot;fix&quot;&gt;&lt;code&gt;패턴 = 변화
변화 = 반복 횟수 변화
반복 횟수 변화 = 조건(i)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;✅ ✅ 최종 한 줄 정리&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;div&gt;  &lt;b&gt;for문은 매 반복마다 초기값부터 다시 시작하므로, 반복 횟수의 변화는 조건에서 만들어야 하며, 그 기준은 줄을 결정하는 i가 된다&lt;/b&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;h1&gt;  초간단 감각&lt;/h1&gt;
&lt;pre class=&quot;fix&quot;&gt;&lt;code&gt;for문 = 매번 새로 시작  
패턴 = 조건으로 만든다&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;h1&gt;✅ ✅ 8. 왜 i를 기준으로 사용하는가&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;가장 바깥 반복문(i)이 &amp;ldquo;줄&amp;rdquo;을 결정하기 때문이다&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 핵심 구조&lt;/h2&gt;
&lt;pre class=&quot;stylus&quot;&gt;&lt;code&gt;for(i) &amp;rarr; 줄(전체 흐름)
for(j) &amp;rarr; 그 줄에서 반복 횟수
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 왜 i를 쓰는가&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;i는 줄 번호라서 매 반복마다 변함&lt;/li&gt;
&lt;li&gt;줄이 바뀌면 출력도 달라져야 함&lt;/li&gt;
&lt;li&gt;그래서 j의 반복 횟수를 i 기준으로 만든다&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 예시&lt;/h2&gt;
&lt;pre id=&quot;code_1780221628427&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for(int j=5; j&amp;gt;=i; j--){
    printf(&quot;-&quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-testid=&quot;ComponentFluentProviderId&quot;&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  의미:&lt;/p&gt;
&lt;pre class=&quot;gcode&quot;&gt;&lt;code&gt;줄(i)에 따라 반복 횟수 변경
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;h1&gt;✅ ✅ 9. 다른 변수도 사용할 수 있는가&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;✅ &lt;b&gt;가능하다&lt;/b&gt;&lt;br /&gt;❗ 하지만&lt;br /&gt;  &lt;b&gt;반복 범위가 줄(i)에 따라 변해야 한다&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ ✅ 되는 경우&lt;/h2&gt;
&lt;pre id=&quot;code_1780221837377&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int x = 4;

for(int j=i; j&amp;lt;=x; j++){
    printf(&quot;-&quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  특징:&lt;/p&gt;
&lt;pre class=&quot;gcode&quot;&gt;&lt;code&gt;시작 = i (변함)
끝 = x (고정)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  결과:&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;i=1 &amp;rarr; 4개  
i=2 &amp;rarr; 3개  
i=3 &amp;rarr; 2개  
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  ✅ 줄마다 변화 발생&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ ✅ 핵심 포인트&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;i와 고정값을 조합하면 패턴이 만들어진다&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;❌ ❌ 안 되는 경우&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;code_1780221862661&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int x = 3;

for(int j=x; j&amp;lt;=5; j++){
    printf(&quot;-&quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  특징:&lt;/p&gt;
&lt;pre class=&quot;fix&quot;&gt;&lt;code&gt;시작 = 고정값
끝 = 고정값
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  결과:&lt;/p&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;항상 동일 ❌
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;✅ ✅ 진짜 핵심 정리&lt;/h1&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;i = 변화 (줄)
x = 고정 (기준값)

&amp;rarr; 변화 + 고정 조합 &amp;rarr; 패턴 생성 ✅
&amp;rarr; 고정 + 고정 &amp;rarr; 변화 없음 ❌
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;✅ ✅ 최종 핵심 한 줄&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;변수 이름은 중요하지 않고, 반복 범위가 줄(i)에 따라 변하느냐가 가장 중요하다&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;  최종 감각 (마무리용)&lt;/h1&gt;
&lt;pre class=&quot;matlab&quot;&gt;&lt;code&gt;i = 기준 (줄)
j = 반복 횟수 계산

&amp;rarr; j는 i를 이용해서 변화해야 패턴이 만들어진다
&amp;rarr; i와 고정값을 섞어서 사용해도 된다
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>c언어</category>
      <author>lsjking911</author>
      <guid isPermaLink="true">https://lsjking911.tistory.com/53</guid>
      <comments>https://lsjking911.tistory.com/53#entry53comment</comments>
      <pubDate>Sun, 31 May 2026 19:06:21 +0900</pubDate>
    </item>
    <item>
      <title>이중 반복문과 별 찍기 패턴 정리</title>
      <link>https://lsjking911.tistory.com/52</link>
      <description>&lt;div&gt;
&lt;h1&gt;✅ 1. 이중 반복문 구조&lt;/h1&gt;
&lt;pre id=&quot;code_1780218639506&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for(int i=1; i&amp;lt;=5; i++){
    for(int j=1; j&amp;lt;=5; j++){
        // 실행문
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  의미&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반복문 안에 또 다른 반복문이 있는 구조&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  핵심:&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;바깥 반복 1번 &amp;rarr; 안쪽 반복 전체 실행&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h1&gt;✅ 2. 별 찍기 기본 구조&lt;/h1&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-testid=&quot;ComponentFluentProviderId&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-overflow-item=&quot;&quot;&gt;
&lt;div id=&quot;language-badge&quot;&gt;
&lt;pre id=&quot;code_1780218689498&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for(int i=1;i&amp;lt;=5;i++){
    for(int j=5; j&amp;gt;=i; j--){
        printf(&quot;-&quot;);
    }
    for(int k=1; k&amp;lt;=i; k++){
        printf(&quot;*&quot;);
    }
    printf(&quot;\n&quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-fluid-id=&quot;E&quot;&gt;
&lt;div style=&quot;text-align: left;&quot; contenteditable=&quot;false&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h1&gt;✅ 3. 코드 역할 분석&lt;/h1&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;반복문&lt;/td&gt;
&lt;td&gt;역할&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;i&lt;/td&gt;
&lt;td&gt;줄(행)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;j&lt;/td&gt;
&lt;td&gt;공백(-)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;k&lt;/td&gt;
&lt;td&gt;별(*)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h1&gt;✅ 4. 실행 흐름 표&lt;/h1&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;i&lt;/td&gt;
&lt;td&gt;j 반복(j&amp;gt;=i)&lt;/td&gt;
&lt;td&gt;-개수&lt;/td&gt;
&lt;td&gt;k반복 (k&amp;lt;=i)&lt;/td&gt;
&lt;td&gt;* 개수&lt;/td&gt;
&lt;td&gt;출력&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;5&amp;rarr;1&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;-----*&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;5&amp;rarr;2&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;----**&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;5&amp;rarr;3&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;---***&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;5&amp;rarr;4&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;--****&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;5&amp;rarr;5&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;-*****&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h1&gt;✅ 5. 핵심 패턴&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;✅ i가 증가할수록&lt;br /&gt;  공백(-)은 줄어들고&lt;br /&gt;  별(*)은 늘어난다&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;✅ 6. 조건의 중요성  &lt;/h1&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 올바른 코드&lt;/h2&gt;
&lt;div&gt;
&lt;div data-testid=&quot;ComponentFluentProviderId&quot;&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1780218855338&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for(int j=5; j&amp;gt;=i; j--){&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-overflow-item=&quot;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-overflow-item=&quot;&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;  특징&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;matlab&quot;&gt;&lt;code&gt;i에 따라 반복 횟수 변함 ✅
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;❌ 잘못된 코드(될 줄 알았다)&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-testid=&quot;ComponentFluentProviderId&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-overflow-item=&quot;&quot;&gt;
&lt;pre id=&quot;code_1780218886355&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for(int j=5; j&amp;gt;=1; j--){&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div data-overflow-item=&quot;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-overflow-item=&quot;&quot;&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  문제&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;항상 5번 반복 ❌
&amp;rarr; 공백이 변하지 않음&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div data-overflow-item=&quot;&quot;&gt;
&lt;div id=&quot;language-badge&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 결과 비교&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅ j &amp;gt;= i&lt;/h3&gt;
&lt;pre class=&quot;markdown&quot;&gt;&lt;code&gt;-----*
----**
---***
--****
-*****
&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;❌ j &amp;gt;= 1&lt;/h3&gt;
&lt;pre class=&quot;ada&quot;&gt;&lt;code&gt;-----*
-----**
-----***
-----****
-----*****
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  ❌ 모양 깨짐&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h1&gt;✅ 7. 핵심 원리&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;❗ &lt;b&gt;패턴을 만들려면 i가 반드시 조건에 포함되어야 한다&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;✅ 8. 두 가지 구현 방식 비교&lt;/h1&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 내 방식 (감소)&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;code_1780218985587&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for(int j=5; j&amp;gt;=i; j--)&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  특징:&lt;/p&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;큰 값 &amp;rarr; 줄여 나감&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 다른 방식 (증가)&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-testid=&quot;ComponentFluentProviderId&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-overflow-item=&quot;&quot;&gt;
&lt;div id=&quot;language-badge&quot;&gt;
&lt;pre id=&quot;code_1780219016330&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for(int j=i; j&amp;lt;5; j++)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-fluid-id=&quot;E&quot;&gt;
&lt;div style=&quot;text-align: left;&quot; contenteditable=&quot;false&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  특징:&lt;/p&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;작은 값 &amp;rarr; 늘려 나감
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 차이&lt;/h2&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;방식&lt;/td&gt;
&lt;td&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;감소 방식&lt;/td&gt;
&lt;td&gt;위에서 깎는 느낌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;증가 방식&lt;/td&gt;
&lt;td&gt;아래에서 채우는 느낌&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;✔ 둘 다 결과는 동일함&lt;/p&gt;
&lt;h1&gt;✅ 9. 핵심 개념 총정리&lt;/h1&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 중요한 규칙 3개&lt;/h2&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;1. i &amp;rarr; 줄을 의미한다
2. j &amp;rarr; 공백 개수를 조절한다
3. k &amp;rarr; 별 개수를 늘린다
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 핵심 공식&lt;/h2&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;공백 &amp;rarr; 줄어야 함
별   &amp;rarr; 늘어나야 함
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;✅ ✅ 최종 한 줄 정리&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이중 반복문에서는 바깥 반복문(i)이 줄을 결정하고, 안쪽 반복문(j, k)이 공백과 별의 개수를 조절하여 패턴을 만든다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;  한 방 요약&lt;/h1&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;i = 줄
j = 공백
k = 별

&amp;rarr; i에 따라 j는 줄고, k는 늘어야 모양이 나온다&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</description>
      <category>c언어</category>
      <author>lsjking911</author>
      <guid isPermaLink="true">https://lsjking911.tistory.com/52</guid>
      <comments>https://lsjking911.tistory.com/52#entry52comment</comments>
      <pubDate>Sun, 31 May 2026 18:26:50 +0900</pubDate>
    </item>
    <item>
      <title>이중 반복문 완전 정리 (파헤치기 )</title>
      <link>https://lsjking911.tistory.com/51</link>
      <description>&lt;div&gt;
&lt;h1&gt;✅ 1. 이중 반복문이란?&lt;/h1&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-testid=&quot;ComponentFluentProviderId&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1780216019618&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for(int i=1; i&amp;lt;=3; i++){
    for(int j=1; j&amp;lt;=5; j++){
        printf(&quot;%d %d\n&quot;, i, j);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  구조:&lt;/p&gt;
&lt;pre class=&quot;erlang&quot;&gt;&lt;code&gt;for (바깥 반복문) {
    for (안쪽 반복문) {
        실행문
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  정의:&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;반복문 안에 또 다른 반복문이 있는 구조&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;✅ 2. 실행 원리 (핵심 )&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  가장 중요한 한 줄:&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;❗ &amp;ldquo;바깥 반복문 1번 &amp;rarr; 안쪽 반복문 전체 실행&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 흐름&lt;/h2&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;i = 1
 &amp;rarr; j = 1~5 전부 실행

i = 2
 &amp;rarr; j = 1~5 전부 실행

i = 3
 &amp;rarr; j = 1~5 전부 실행
&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;style1&quot; /&gt;
&lt;h1&gt;✅ 3. 코드 예제 (1번)&lt;/h1&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;pre id=&quot;code_1780216175977&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for(int i=1; i&amp;lt;=3;i++){
    printf(&quot;첫 번째 반복문: %d\n&quot;,i);
    for(int j=1;j&amp;lt;=5;j++){
        printf(&quot;    두 번째 반복문: %d\n&quot;,j);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 출력 구조&lt;/h2&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;첫 번째 반복문: 1
    두 번째 반복문: 1
    두 번째 반복문: 2
    ...
첫 번째 반복문: 2
    두 번째 반복문: 1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 핵심 해석&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  i는 큰 반복&lt;br /&gt;  j는 작은 반복&lt;/p&gt;
&lt;pre class=&quot;matlab&quot;&gt;&lt;code&gt;i 한 번 &amp;rarr; j 전체&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;h1&gt;✅ 4. 구구단 (완벽 활용 예 )&lt;/h1&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-testid=&quot;ComponentFluentProviderId&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-overflow-item=&quot;&quot;&gt;
&lt;div id=&quot;language-badge&quot;&gt;
&lt;pre id=&quot;code_1780216256117&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for(int i=2; i&amp;lt;=9; i++){
    printf(&quot;%d단 계산\n&quot;, i);
    for(int j=1;j&amp;lt;=9;j++){
        printf(&quot;%d x %d = %d\n&quot;, i, j, i*j);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-fluid-id=&quot;E&quot;&gt;
&lt;div style=&quot;text-align: left;&quot; contenteditable=&quot;false&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 구조&lt;/h2&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;i &amp;rarr; 단 (2~9단)
j &amp;rarr; 곱하는 숫자 (1~9)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 해석&lt;/h2&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;2단 &amp;rarr; 1~9
3단 &amp;rarr; 1~9
...
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  이중 반복문 사용 이유:&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  &amp;ldquo;행 + 열 구조 만들기&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;&amp;nbsp;&lt;/h1&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;✅ 5. 별 찍기 (이중 반복문 핵심 )&lt;/h1&gt;
&lt;pre id=&quot;code_1780216311070&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for(int i=1;i&amp;lt;=5;i++){
    for(int j=1; j&amp;lt;=i; j++){
        printf(&quot;*&quot;);
    }
    printf(&quot;\n&quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 출력&lt;/h2&gt;
&lt;pre class=&quot;gams&quot;&gt;&lt;code&gt;*
**
***
****
*****
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 핵심 구조&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  j가 i만큼 반복됨&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;i=1 &amp;rarr; * 1개
i=2 &amp;rarr; * 2개
i=3 &amp;rarr; * 3개
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;✅ 6. 흐름 완전 분석 (이미지 방식 )&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  이미지 그대로 이해:&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ i / j 흐름&lt;/h2&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;i = 1 &amp;rarr; j = 1
i = 2 &amp;rarr; j = 1, 2
i = 3 &amp;rarr; j = 1, 2, 3
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 실제 실행&lt;/h2&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;i=1 &amp;rarr; *
i=2 &amp;rarr; **
i=3 &amp;rarr; ***
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  이걸 표로 보면 &amp;darr;&lt;/p&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;i: 1   2   3   4   5
j: 1 | 1 2 | 1 2 3 | ...
출력: *  **  ***  ****  *****
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;i&lt;/td&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;4----&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;j&lt;/td&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;출력&lt;/td&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;*줄바꿈&lt;/td&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;*&lt;/td&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;*줄바꿈&lt;/td&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;*&lt;/td&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;*&lt;/td&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;*줄바꿈&lt;/td&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;*&lt;/td&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;*&lt;/td&gt;
&lt;td style=&quot;width: 10%;&quot;&gt;*&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h1&gt;✅ 7. 핵심 개념 정리  &lt;/h1&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ ✅ 1️⃣ 반복 구조&lt;/h2&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;바깥 &amp;rarr; 줄
안쪽 &amp;rarr; 칸
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ ✅ 2️⃣ 실행 규칙&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바깥 1번 &amp;rarr; 안쪽 전부 실행&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ ✅ 3️⃣ 패턴 생성 핵심&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  j 조건에 따라 모양이 결정됨&lt;/p&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;조건&lt;/td&gt;
&lt;td&gt;결과&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;j &amp;lt;= 5&lt;/td&gt;
&lt;td&gt;항상 5개&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;j &amp;lt;= i&lt;/td&gt;
&lt;td&gt;삼각형&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;j &amp;gt;= i&lt;/td&gt;
&lt;td&gt;역삼각형&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h1&gt;✅ 8. 언제 쓰는가&lt;/h1&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ 이중 반복문 사용하는 상황&lt;/h2&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;2차원 배열 ✅&lt;/li&gt;
&lt;li&gt;좌표 처리 ✅&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;✅ ✅ 전체 흐름 정리 (빌드업 )&lt;/h1&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;1. 반복문 &amp;rarr; 같은 작업 반복
2. 이중 반복문 &amp;rarr; 반복 안에 반복
3. 바깥(i) &amp;rarr; 큰 흐름
4. 안쪽(j) &amp;rarr; 세부 반복
5. 조건에 따라 모양 생성
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;✅ ✅ 최종 한 줄 정리&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이중 반복문은 바깥 반복문이 한 번 실행될 때마다 안쪽 반복문이 전체 실행되며, 주로 행과 열 구조나 패턴 출력에 사용된다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;  초간단 감각&lt;/h1&gt;
&lt;pre class=&quot;matlab&quot;&gt;&lt;code&gt;i &amp;rarr; 줄
j &amp;rarr; 별
j &amp;lt;= i &amp;rarr; 점점 늘어나는 구조
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;  진짜 핵심 한 방&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  &amp;ldquo;i는 몇 줄 출력할지 정하고, j는 그 줄에 몇 개 출력할지 결정한다&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;</description>
      <category>c언어</category>
      <author>lsjking911</author>
      <guid isPermaLink="true">https://lsjking911.tistory.com/51</guid>
      <comments>https://lsjking911.tistory.com/51#entry51comment</comments>
      <pubDate>Sun, 31 May 2026 17:40:57 +0900</pubDate>
    </item>
    <item>
      <title>for문 vs while문 정리</title>
      <link>https://lsjking911.tistory.com/50</link>
      <description>&lt;div&gt;
&lt;h1&gt;✅ 1. 선언 구조 차이&lt;/h1&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅   for문&lt;/h2&gt;
&lt;pre id=&quot;code_1780206242139&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for (초기값; 조건식; 증감식){
    실행문;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&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;b&gt;한 줄에 다 모여 있음&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;반복 구조가 한눈에 보임 ✅&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;  예:&lt;/div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1780206284120&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for (int i = 1; i &amp;lt;= 10; i++){
    printf(&quot;%d\n&quot;, i);
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅   while문&lt;/h2&gt;
&lt;pre id=&quot;code_1780206325963&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;초기값;

while (조건){
    실행문;
    증감식;
}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;div data-testid=&quot;ComponentFluentProviderId&quot;&gt;
&lt;div&gt;
&lt;div data-overflow-item=&quot;&quot;&gt;
&lt;div id=&quot;language-badge&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&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;b&gt;밖과 안으로 나뉘어 있음&lt;/b&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;pre id=&quot;code_1780206370917&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int i = 1;

while (i &amp;lt;= 10){
    printf(&quot;%d\n&quot;, i);
    i++;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;h1&gt;✅ ✅ 핵심 구조 비교&lt;/h1&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;구분&lt;/td&gt;
&lt;td&gt;for문&lt;/td&gt;
&lt;td&gt;while문&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;초기값&lt;/td&gt;
&lt;td&gt;안에 있음&lt;/td&gt;
&lt;td&gt;밖에 있음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;조건식&lt;/td&gt;
&lt;td&gt;안에 있음&lt;/td&gt;
&lt;td&gt;괄호 안&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;증감식&lt;/td&gt;
&lt;td&gt;안에 있음&lt;/td&gt;
&lt;td&gt;내부에 따로 작성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;가독성&lt;/td&gt;
&lt;td&gt;반복 구조 한눈에 보임&lt;/td&gt;
&lt;td&gt;흐름을 직접 구성해야 함&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;h1&gt;✅ 2. 언제 사용하면 좋은지&lt;/h1&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅   for문 (횟수가 정해져 있을 때)&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  몇 번 반복할지 정확히 알 때 사용&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅ 예&lt;/h3&gt;
&lt;pre id=&quot;code_1780206453139&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;1부터 10까지 출력
배열 5개 출력
10번 반복&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  공통 특징:&lt;/p&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;반복 횟수 명확함 ✅
&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;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  코드:&lt;/p&gt;
&lt;pre id=&quot;code_1780206480769&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for (int i = 1; i &amp;lt;= 10; i++){
    printf(&quot;%d\n&quot;, i);
}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;div data-testid=&quot;ComponentFluentProviderId&quot;&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅   while문 (조건이 중요할 때)&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  언제 끝날지 모를 때 사용&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅ 예&lt;/h3&gt;
&lt;pre id=&quot;code_1780206526790&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;사용자가 0 입력할 때까지 반복
비밀번호 맞을 때까지 반복&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  공통 특징:&lt;/p&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;몇 번 반복할지 모름 ❗
조건이 중요함 ✅&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  코드:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-testid=&quot;ComponentFluentProviderId&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-fluid-id=&quot;E&quot;&gt;
&lt;pre id=&quot;code_1780206591259&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int num;

while (1){
    scanf(&quot;%d&quot;, &amp;amp;num);
    if(num == 0) break;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h1&gt;✅ ✅ 핵심 차이 정리&lt;/h1&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;기준&lt;/td&gt;
&lt;td&gt;for문&lt;/td&gt;
&lt;td&gt;while문&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;반복 기준&lt;/td&gt;
&lt;td&gt;횟수 중심&lt;/td&gt;
&lt;td&gt;조건 중심&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;사용 상황&lt;/td&gt;
&lt;td&gt;반복 횟수 명확&lt;/td&gt;
&lt;td&gt;종료 시점 불확실&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;특징&lt;/td&gt;
&lt;td&gt;구조가 한 줄&lt;/td&gt;
&lt;td&gt;직접 흐름 제어&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h1&gt;✅ ✅ 최종 한 줄 정리&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;for문은 반복 횟수가 정해진 경우에 사용하고, while문은 특정 조건이 만족될 때까지 반복해야 하는 경우에 사용한다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;  초간단 감각&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;for &amp;rarr; &amp;ldquo;몇 번 할지 안다&amp;rdquo;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;while &amp;rarr; &amp;ldquo;언제 끝날지 모른다&amp;rdquo;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description>
      <category>c언어</category>
      <author>lsjking911</author>
      <guid isPermaLink="true">https://lsjking911.tistory.com/50</guid>
      <comments>https://lsjking911.tistory.com/50#entry50comment</comments>
      <pubDate>Sun, 31 May 2026 14:51:20 +0900</pubDate>
    </item>
  </channel>
</rss>