<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>leequiett의 개발 블로그</title>
    <link>https://leequiett.tistory.com/</link>
    <description>개발 블로그입니다. 벨로그에서 이사중입니다~</description>
    <language>ko</language>
    <pubDate>Mon, 18 May 2026 20:21:13 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>leequiett</managingEditor>
    <image>
      <title>leequiett의 개발 블로그</title>
      <url>https://tistory1.daumcdn.net/tistory/7622893/attach/14751a07456f476b8053b63d5fd74d53</url>
      <link>https://leequiett.tistory.com</link>
    </image>
    <item>
      <title>보안 인프라 구성요소</title>
      <link>https://leequiett.tistory.com/58</link>
      <description>&lt;h1&gt;DLP, EDR, IPS, NAC, 방화벽 정책 순서, Firewall과 WAF&lt;/h1&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;DLP (Data Loss Prevention, 데이터 유출 방지)&lt;/h2&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;b&gt;민감한 정보의 유출 방지&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;작동 방식&lt;/b&gt;: 데이터를 식별하고, 정책에 따라 전송, 복사, 출력 등을 통제&lt;/li&gt;
&lt;li&gt;&lt;b&gt;주요 기능&lt;/b&gt;: 개인정보나 기업 기밀 등 민감 정보가 이메일, USB, 클라우드 등으로 유출되지 않도록 감시하고 차단&lt;/li&gt;
&lt;li&gt;&lt;b&gt;사용 위치&lt;/b&gt;: 엔드포인트, 네트워크, 클라우드&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;중점&lt;/b&gt;: &quot;데이터&quot; 자체 보호&lt;br /&gt;&lt;b&gt;예시&lt;/b&gt;: 직원이 연구정보를 허가받지 않은 저장장치로 보내려 할 때 차단&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;EDR (Endpoint Detection &amp;amp; Response, 엔드포인트 탐지 및 대응)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;목적: 엔드포인트(PC, 서버 등)의 위협 탐지 및 대응&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;작동 방식:&lt;/b&gt; 지속적인 모니터링 및 행동 분석을 통해 이상 징후 탐지&lt;/li&gt;
&lt;li&gt;&lt;b&gt;주요 기능:&lt;/b&gt; 악성 행위 탐지, 조사 대응 자동화&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;중점:&lt;/b&gt; &quot;행위 기반 탐지와 대응&quot;&lt;br /&gt;&lt;b&gt;예시:&lt;/b&gt; 사용자의 PC에서 이상한 프로세스가 실행되면 경고 및 차단&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;EDR의 기술적 분류:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;EDR은 엔드포인트 장치(PC, 서버 등)에 설치되어 이상 행위를 탐지하고 대응하는 시스템이므로, 전통적인 안티바이러스(AV) 또는 &lt;b&gt;차세대 안티바이러스(NGAV)&lt;/b&gt; 와 같은 엔드포인트 보안 제품의 확장된 개념이라고 볼 수 있다.&lt;/li&gt;
&lt;li&gt;EDR은 단순 탐지를 넘어서 분석, 포렌식, 자동 대응까지 포함한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;방화벽(Firewall)과의 차이점:&lt;/b&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;b&gt;네트워크 보안 기술&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;반면, &lt;b&gt;EDR은 내부에서 발생하는 이상 행위 탐지 및 조사&lt;/b&gt;에 중점. 이미 내부로 들어온 악성코드나 이상행위에 대한 &lt;b&gt;사후 탐지 및 대응&lt;/b&gt; 역할이 강함.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;IPS (Intrusion Prevention System, 침입 방지 시스템)&lt;/h2&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;b&gt;작동 방식:&lt;/b&gt; 트래픽을 실시간 분석해 알려진 공격 패턴이나 이상 트래픽 차단&lt;/li&gt;
&lt;li&gt;&lt;b&gt;주요 기능:&lt;/b&gt; 시그니처 기반 탐지, 비정상 트래픽 차단&lt;/li&gt;
&lt;li&gt;&lt;b&gt;사용 위치:&lt;/b&gt; 네트워크 경계 또는 내부&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;중점:&lt;/b&gt; &quot;네트워크 계층의 공격 차단&quot;&lt;br /&gt;&lt;b&gt;예시:&lt;/b&gt; SQL 인젝션, XSS등 공격이 네트워크를 들어올 때 차단. DDOS 공격 차단&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;NAC (Network Access Control, 네트워크 접근 제어)&lt;/h2&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;b&gt;작동 방식:&lt;/b&gt; 사용자의 기기, 인증 상태, 보안 상태 등을 확인해 접속을 허용 또는 제한&lt;/li&gt;
&lt;li&gt;&lt;b&gt;주요 기능:&lt;/b&gt; 사용자 인증, 장치 보안 검사, 접속 제어&lt;/li&gt;
&lt;li&gt;&lt;b&gt;사용 위치:&lt;/b&gt; 네트워크 진입점(스위치, 무선 AP 등)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;중점:&lt;/b&gt; &quot;접속 허용 여부 결정&quot;&lt;br /&gt;&lt;b&gt;예시:&lt;/b&gt; 보안 업데이트 안 된 노트북은 사내망 접속 차단. 부서, 직급별로 네트워크 접근 권한 다르게 부여해 정보 접근 권한 제한. 등록되지 않은 단말기의 사내 네트워크 접속 차단&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;방화벽 정책 구성&lt;/h2&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;b&gt;목적: 허용된 트래픽만 통과시키고 나머지는 차단&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;작동 방식:&lt;/b&gt; IP, 포트, 프로토콜 등을 기준으로 정책을 적용&lt;/li&gt;
&lt;li&gt;&lt;b&gt;주요 기능:&lt;/b&gt; 패킷 필터링, 상태 기반 검사, 애플리케이션 제어 (NGFW)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;사용 위치:&lt;/b&gt; 네트워크 경계&lt;br /&gt;&lt;b&gt;중점:&lt;/b&gt; &quot;기본적인 트래픽 필터링&quot;&lt;br /&gt;&lt;b&gt;예시:&lt;/b&gt; 외부에서 내부로의 불필요한 포트 접근 차단&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미리 정의된 보안 규칙에 기반해 트래픽을 모니터링하고 제어하는 보안 시스템&lt;br /&gt;신뢰 구간이 다른 네트워크 구간들 사이에 놓여서 신뢰 수준이 낮은 네트워크로부터 오는 해로운 트래픽이 신뢰 수준이 높은 네트워크로 오지 못하게 막는 것&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;방화벽의 기본 Rule&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. 방화벽의 우선순위는 숫자가 낮을수록 우선순위가 높다.&lt;/h4&gt;
&lt;h5&gt;예제 1&lt;/h5&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;[Rule 1]&lt;/b&gt; &lt;code&gt;1.1.1.1&lt;/code&gt; 사이트 차단 ─ 우선순위 &lt;code&gt;10000&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;[Rule 2]&lt;/b&gt; &lt;code&gt;1.1.1.1&lt;/code&gt; 사이트 허용 ─ 우선순위 &lt;code&gt;10001&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;결과:&lt;/b&gt; Rule 1을 적용하여 사이트를 차단한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;예제 2&lt;/h5&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;[Rule 1]&lt;/b&gt; &lt;code&gt;1.1.1.1&lt;/code&gt; 사이트 허용 ─ 우선순위 &lt;code&gt;10000&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;[Rule 2]&lt;/b&gt; 모든 사이트 차단 ─ 우선순위 &lt;code&gt;10001&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;결과:&lt;/b&gt; Rule 1을 적용하여 사이트 접속은 가능하나 다른 사이트 접속은 불가하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. 방화벽의 룰은 최소한의 원칙에 따라 적용된다.&lt;/h4&gt;
&lt;h5&gt;상황&lt;/h5&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;1.1.1.1&lt;/code&gt; 사이트의 개발과 개선 업데이트를 위해 &lt;code&gt;22번 포트&lt;/code&gt;와 페이지 뷰를 위해 &lt;code&gt;80번 포트&lt;/code&gt;를 개방해야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;잘못된 예&lt;/h5&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;[Rule 1]&lt;/b&gt; &lt;code&gt;1.1.1.1&lt;/code&gt; 사이트 &lt;code&gt;22, 80번 포트&lt;/code&gt; 허용&lt;/li&gt;
&lt;li&gt;&lt;b&gt;문제점:&lt;/b&gt; 목적이 2개이며, 독립된 활용이 가능한 영역이기에 룰이 하나이면 적용되면 안 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;올바른 예&lt;/h5&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;[Rule 1]&lt;/b&gt; &lt;code&gt;1.1.1.1&lt;/code&gt; 사이트 &lt;code&gt;22번 포트&lt;/code&gt; 허용&lt;/li&gt;
&lt;li&gt;&lt;b&gt;[Rule 2]&lt;/b&gt; &lt;code&gt;1.1.1.1&lt;/code&gt; 사이트 &lt;code&gt;80번 포트&lt;/code&gt; 허용&lt;/li&gt;
&lt;li&gt;&lt;b&gt;결과:&lt;/b&gt; 각각 룰을 적용시켜야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3. 방화벽의 허용 혹은 차단에 대한 사유는 명확해야 한다.&lt;/h4&gt;
&lt;h5&gt;상황&lt;/h5&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;개발 부서에 있는 &lt;b&gt;A씨&lt;/b&gt;가 &lt;b&gt;DMZ 영역&lt;/b&gt;에 있는 &lt;b&gt;개발서버 S&lt;/b&gt;에 원격 접속(SSH)을 위해 &lt;code&gt;22번 포트&lt;/code&gt;의 개방이 필요하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;잘못된 예 1&lt;/h5&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;[Rule 1]&lt;/b&gt; 출발지는 &lt;b&gt;A씨가 연결된 전체 대역의 IP&lt;/b&gt;, 도착지는 &lt;b&gt;개발서버 S의 22번 포트&lt;/b&gt;, &lt;code&gt;TCP 프로토콜&lt;/code&gt; 개방 허용&lt;/li&gt;
&lt;li&gt;&lt;b&gt;문제점:&lt;/b&gt; 전체 대역의 IP를 개방하는 것을 허용하면 안 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;잘못된 예 2&lt;/h5&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;[Rule 1]&lt;/b&gt; 출발지는 &lt;b&gt;A씨의 IP&lt;/b&gt;, 도착지는 &lt;b&gt;개발서버 S의 IP&lt;/b&gt; 개방 허용&lt;/li&gt;
&lt;li&gt;&lt;b&gt;문제점:&lt;/b&gt; &lt;code&gt;TCP 프로토콜&lt;/code&gt;의 개방 허용/제한에 대한 명시가 부족하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;올바른 예&lt;/h5&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;[Rule 1]&lt;/b&gt; 출발지는 &lt;b&gt;A씨의 IP&lt;/b&gt;, 도착지는 &lt;b&gt;개발서버 S의 22번 포트&lt;/b&gt;, &lt;code&gt;TCP 프로토콜&lt;/code&gt; 개방 허용&lt;/li&gt;
&lt;li&gt;&lt;b&gt;결과:&lt;/b&gt; 모든 것이 잘 명시되어 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;방화벽 정책 구성 순서 및 원칙&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방화벽 정책은 &lt;b&gt;Top-down, First Match&lt;/b&gt; 방식으로 적용되므로, &lt;b&gt;정책의 순서와 구성 방식&lt;/b&gt;이 보안성과 운영 효율성에 매우 큰 영향을 미친다.&lt;/p&gt;
&lt;table data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;순서&lt;/th&gt;
&lt;th&gt;원칙&lt;/th&gt;
&lt;th&gt;설명&lt;/th&gt;
&lt;th&gt;실무 예시&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;①&lt;/td&gt;
&lt;td&gt;&lt;b&gt;가장 구체적인 정책을 최상단에 배치&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;방화벽은 Top-down, First Match 방식으로 동작. 조건이 구체적인 정책이 먼저 적용되어야 함&lt;/td&gt;
&lt;td&gt;특정 내부 서버의 특정 포트를 외부 특정 IP에서 접근 허용하는 정책&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;②&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Allow &amp;rarr; Deny 순서로 배치 (Default Deny 환경)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;필요한 트래픽을 먼저 허용하고, 그 외는 모두 차단하는 구조&lt;/td&gt;
&lt;td&gt;HTTP/HTTPS, SMTP 등 명시적 허용 &amp;rarr; 마지막에 전면 차단&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;③&lt;/td&gt;
&lt;td&gt;&lt;b&gt;정책 목적에 따라 그룹화&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;유사 목적끼리 묶어 구성하면 가독성과 관리 용이성 향상&lt;/td&gt;
&lt;td&gt;&quot;개발 서버 접근&quot;, &quot;인사부 접근&quot;, &quot;임시 허용 정책&quot; 등&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;④&lt;/td&gt;
&lt;td&gt;&lt;b&gt;임시 정책은 명확히 표시 및 관리&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;만료일, 설명 주석 등으로 구분하고 주기적으로 점검&lt;/td&gt;
&lt;td&gt;&quot;임시 (2025-04-24까지)&quot; 주석 추가, 스크립트로 자동 제거 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⑤&lt;/td&gt;
&lt;td&gt;&lt;b&gt;로그 기록은 전략적으로 설정&lt;/b&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;b&gt;Any-to-Any 정책은 최소화하고 하단 배치&lt;/b&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;b&gt;기본 차단(Default Deny) 정책을 최하단에 명시&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;명시적 허용 외 모든 트래픽을 차단&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Source: Any, Destination: Any, Service: Any, Action: Deny&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&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;b&gt;정책 이름 및 설명&lt;/b&gt;&lt;br /&gt;&amp;rarr; 직관적인 이름과 설명 부여 (예: &lt;code&gt;HR-Server-Access-Allow&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;정책 그룹/카테고리화&lt;/b&gt;&lt;br /&gt;&amp;rarr; 벤더 기능 활용해 목적별로 정책 정리&lt;/li&gt;
&lt;li&gt;&lt;b&gt;정기 정책 검토 및 감사&lt;/b&gt;&lt;br /&gt;&amp;rarr; 불필요한 정책 제거, 보안 환경 변경 반영&lt;/li&gt;
&lt;li&gt;&lt;b&gt;변경 관리 프로세스&lt;/b&gt;&lt;br /&gt;&amp;rarr; 변경 시 승인 프로세스 및 변경 이력 기록&lt;/li&gt;
&lt;li&gt;&lt;b&gt;사전 테스트 및 검증&lt;/b&gt;&lt;br /&gt;&amp;rarr; 테스트 환경에서 먼저 적용해 서비스 영향도 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;정책 적용 순서 시각화 (Top-down Match)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;+-------------------------------+ | ① 특정 허용 정책 | &amp;larr; 구체적, 최상단&lt;br /&gt;+-------------------------------+ | ② 일반 허용 정책 |&lt;br /&gt;+-------------------------------+ | ③ 광범위 허용 (제한적으로) |&lt;br /&gt;+-------------------------------+ | ④ 기본 차단 정책 (Default Deny) | &amp;larr; 최하단&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;잘못된 정책 구성 예시&lt;/h2&gt;
&lt;table data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;잘못된 구성&lt;/th&gt;
&lt;th&gt;문제점&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&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;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;팁:&lt;/b&gt; 방화벽 정책은 &quot;명확성, 최소 권한, 가시성, 지속적 검토&quot;의 원칙을 지켜야한다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Firewall과 WAF의 차이점&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기능 비교&lt;/h3&gt;
&lt;table data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;기능&lt;/th&gt;
&lt;th&gt;방화벽 (Firewall)&lt;/th&gt;
&lt;th&gt;웹 방화벽 (WAF)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;보호 대상&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;네트워크 계층(IP, 포트, 프로토콜)&lt;/td&gt;
&lt;td&gt;웹 애플리케이션 계층(HTTP/HTTPS 요청 내용)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;주요 기능&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;접근 제어, DDoS 일부 방어, VPN 관리&lt;/td&gt;
&lt;td&gt;SQL Injection, XSS 등 웹 기반 공격 방어&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;분석 계층&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;OSI Layer 3, 4&lt;/td&gt;
&lt;td&gt;OSI Layer 7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;탐지 방식&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;IP/포트 기반 필터링, 패킷 분석&lt;/td&gt;
&lt;td&gt;HTTP 요청 내용 분석, 악성 패턴 감지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;실무 예시&lt;/b&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;hr data-ke-style=&quot;style1&quot; /&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;b&gt;WAF는 OSI 7계층(애플리케이션 계층)&lt;/b&gt; 에서 작동하며,&lt;br /&gt;쿠키 변조, URL 공격, SQL Injection, XSS와 같은 &lt;b&gt;웹 기반 공격&lt;/b&gt;을 탐지 및 차단.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Firewall은 OSI 3~4계층&lt;/b&gt;에서 동작하며,&lt;br /&gt;&lt;b&gt;IP, 포트, 프로토콜&lt;/b&gt; 기준으로 네트워크 트래픽을 제어.&lt;br /&gt;FTP, DNS, SMTP, SSH, TELNET 등의 서비스 보호에 적합.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;레이어 7 DDoS 예시&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웹서버가 &lt;b&gt;HTTP 요청에 반응하여 페이지를 생성&lt;/b&gt;하도록 유도하고 (TCP SYN Flooding 등), 그 요청을 반복하여 &lt;b&gt;서버 자원을 고갈시키는 공격&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;WAF는 이를 식별하고 &lt;b&gt;역방향 프록시(reverse proxy)&lt;/b&gt; 로써 요청을 필터링하여 보호.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;선택 기준: WAF vs Firewall&lt;/h2&gt;
&lt;table data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;설명&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;✅ Firewall&lt;/td&gt;
&lt;td&gt;네트워크 접근 제어, 기본적인 보안 설정이 필요한 경우&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;✅ WAF&lt;/td&gt;
&lt;td&gt;웹 서비스에 특화된 보안, OWASP Top 10 대응이 필요한 경우&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;✅ 병행 사용&lt;/td&gt;
&lt;td&gt;서로 보완적인 관계. &lt;b&gt;둘 다 사용하는 것이 보안상 최적&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;차세대 방화벽 (NGFW)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;기존 방화벽 + 애플리케이션 제어 + 사용자 인증 + DPI + IPS/IDS&lt;/b&gt; 기능을 통합&lt;/li&gt;
&lt;li&gt;일부 NGFW는 &lt;b&gt;WAF 기능을 포함하거나 연동 가능&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;다계층 보안 전략&lt;/b&gt; 구현에 필수 요소&lt;/li&gt;
&lt;/ul&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Firewall&lt;/b&gt;: 누가 접근하는가? (IP, Port 기반)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;WAF&lt;/b&gt;: 어떤 내용이 위험한가? (HTTP Payload 기반)&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;SOAR (Security Orchestration, Automation, and Response)&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;SOAR란?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;SOAR&lt;/b&gt;는 다음 세 가지 보안 기능을 &lt;b&gt;단일 플랫폼에서 통합 제공&lt;/b&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;보안 오케스트레이션 및 자동화 (SOA)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;보안 사고 대응 플랫폼 (SIRP)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;위협 인텔리전스 플랫폼 (TIP)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&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 data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;오케스트레이션 &amp;amp; 플레이북&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;시큐리티 오케스트레이션 (Security Orchestration)&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;보안 솔루션(방화벽, EDR, SIEM 등)&lt;/b&gt; 을 통합하여&lt;br /&gt;&lt;b&gt;위협 탐지 &amp;rarr; 분석 &amp;rarr; 대응&lt;/b&gt; 전 과정을 자동화 및 연결.&lt;/li&gt;
&lt;li&gt;예: SIEM에서 알림 발생 시, 자동으로 EDR을 통해 단말 격리 &amp;rarr; 티켓 발행 &amp;rarr; Slack 알림까지 실행&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;플레이북 (Playbook)&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;SOAR 환경에서의 대응 시나리오(자동화된 업무 프로세스)&lt;/b&gt; 를 정의한 매뉴얼&lt;/li&gt;
&lt;li&gt;공격 유형, 조건, 대응 도구, 우선순위, 워크플로우 등이 포함됨&lt;/li&gt;
&lt;li&gt;&lt;b&gt;비즈니스 로직 기반의 자동화 규칙 세트&lt;/b&gt;&lt;/li&gt;
&lt;/ul&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;b&gt;정확하고 빠르게 반복 가능한 대응&lt;/b&gt;을 가능하게 함&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;SOAR의 주요 효과&lt;/h3&gt;
&lt;table data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;설명&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;보안 운영 자동화&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;반복적인 알림 처리, 티켓 생성, 조치 수행 등을 자동화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;위협 대응 속도 향상&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;인간 개입 없이 빠른 초기 대응 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;플레이북 기반의 표준화된 대응&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;모든 위협을 일관된 기준으로 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;다수의 보안 시스템 연계&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;SIEM, EDR, Firewall, TIP 등과 연동하여 데이터 활용 극대화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;보안 인력 피로도 감소&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;경보 과잉(Alert Fatigue) 해소 및 리소스 절약&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;예시 시나리오&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  SIEM에서 의심스러운 로그인 이벤트 발생&lt;br /&gt;➤ SOAR가 자동으로 사용자 단말에 EDR 명령 실행&lt;br /&gt;➤ 악성 여부 분석 &amp;rarr; 격리 or 무시&lt;br /&gt;➤ 결과를 Slack 및 티켓 시스템에 자동 보고&lt;/p&gt;
&lt;/blockquote&gt;</description>
      <category>보안, 해킹</category>
      <author>leequiett</author>
      <guid isPermaLink="true">https://leequiett.tistory.com/58</guid>
      <comments>https://leequiett.tistory.com/58#entry58comment</comments>
      <pubDate>Thu, 24 Apr 2025 15:17:32 +0900</pubDate>
    </item>
    <item>
      <title>SQLD, 리눅스마스터 2급 합격!</title>
      <link>https://leequiett.tistory.com/57</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;각각 72점, 80점으로 합격!&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;</description>
      <category>일상</category>
      <category>NCS</category>
      <category>농협</category>
      <category>자격증</category>
      <category>출연연</category>
      <category>취업</category>
      <author>leequiett</author>
      <guid isPermaLink="true">https://leequiett.tistory.com/57</guid>
      <comments>https://leequiett.tistory.com/57#entry57comment</comments>
      <pubDate>Sat, 19 Apr 2025 22:37:52 +0900</pubDate>
    </item>
    <item>
      <title>프로그래머스 호텔 대실 문제 - 타임라인 배열로 예약 겹치는 예약 수 계산하기 Java 풀이</title>
      <link>https://leequiett.tistory.com/56</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 설명&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;1479&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4BPKE/btsMuMfHIHS/eOPvk2Wj9J3CwNimq4fGP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4BPKE/btsMuMfHIHS/eOPvk2Wj9J3CwNimq4fGP0/img.png&quot; data-alt=&quot;프로그래머스 호텔 대실 문제&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4BPKE/btsMuMfHIHS/eOPvk2Wj9J3CwNimq4fGP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4BPKE%2FbtsMuMfHIHS%2FeOPvk2Wj9J3CwNimq4fGP0%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;700&quot; height=&quot;1088&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;1479&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;프로그래머스 호텔 대실 문제&lt;/figcaption&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;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/155651?language=java&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/155651?language=java&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1740306414587&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;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/155651?language=java&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/eRkH6/hyYjlxpo77/T1ZkKadQDOnJ1EzEIl1DbK/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/bZ6aLx/hyYjoOsHPg/CpAIMTYIYIJYERz0ckHC4K/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/155651?language=java&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/155651?language=java&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/eRkH6/hyYjlxpo77/T1ZkKadQDOnJ1EzEIl1DbK/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960,https://scrap.kakaocdn.net/dn/bZ6aLx/hyYjoOsHPg/CpAIMTYIYIJYERz0ckHC4K/img.png?width=1920&amp;amp;height=960&amp;amp;face=0_0_1920_960');&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;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.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 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;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;예약시간을 HH:MM에서 MM으로 변경하고 그걸 배열 인덱스로 활용하여 시작 시간에 +1, 종료 시간에는 -1을 기록한다.&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;pre id=&quot;code_1740306757466&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;        // 타임라인을 사용하여 예약이 겹치는 시간 계산
        int[] timeline = new int[1440 + 10]; // 하루는 최대 1440분, 청소 시간을 고려하여 여유를 둠

        // 각 예약에 대해 시작 시간과 종료 시간에 타임라인 변화 기록
        for (int[] time : times) {
            int start = time[0]; // 시작 시간
            int end = time[1];   // 종료 시간 (청소시간 포함)

            // 시작 시점 +1, 종료 시점 -1
            timeline[start]++;
            timeline[end]--;
        }

        // 타임라인을 바탕으로 겹치는 예약의 최대 개수 찾기
        int maxOverlap = 0;
        int currentOverlap = 0;

        for (int i = 0; i &amp;lt; 1440; i++) {
            currentOverlap += timeline[i]; // 겹치는 예약 수 계산
            maxOverlap = Math.max(currentOverlap, maxOverlap); // 최대 겹치는 예약 수 찾기
        }&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;전체 코드&lt;/h2&gt;
&lt;pre id=&quot;code_1740306809583&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
    public int solution(String[][] book_time) {
        int answer = 0;
        int row = book_time.length;
        int[][] times = new int[row][2];
        
        for(int i = 0; i &amp;lt; row; i++) {
            for (int j = 0; j &amp;lt; 2; j++) {
                String[] timeParts = book_time[i][j].split(&quot;:&quot;);
                int hours = Integer.parseInt(timeParts[0]);
                int minutes = Integer.parseInt(timeParts[1]);
                
                if (j == 1) {
                    times[i][j] = hours * 60 + minutes + 10; // 청소 시간 고려    
                } else {
                    times[i][j] = hours * 60 + minutes;
                }
            }
        }
        
        int[] timeline = new int[1440 + 10]; //하루는 최대 1440분 + 청소 시간 10분 추가
        
        for (int[] time : times) {
            int start = time[0];
            int end = time[1];
            
            timeline[start]++;
            timeline[end]--;
        }
        
        int maxOverlap = 0;
        int currentOverlap = 0;
        
        for (int i = 0; i &amp;lt; 1440; i++) {
            currentOverlap += timeline[i];
            maxOverlap = Math.max(currentOverlap, maxOverlap);
        }
        return maxOverlap;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩 테스트 풀이</category>
      <author>leequiett</author>
      <guid isPermaLink="true">https://leequiett.tistory.com/56</guid>
      <comments>https://leequiett.tistory.com/56#entry56comment</comments>
      <pubDate>Sun, 23 Feb 2025 19:36:01 +0900</pubDate>
    </item>
    <item>
      <title>2025 리눅스마스터 2급 1차 공부법, 후기</title>
      <link>https://leequiett.tistory.com/55</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;수험서 추천&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1876&quot; data-origin-height=&quot;1125&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Cx5gU/btsMgSozY9G/dVFKQBvytbxILOztpFpoQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Cx5gU/btsMgSozY9G/dVFKQBvytbxILOztpFpoQK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Cx5gU/btsMgSozY9G/dVFKQBvytbxILOztpFpoQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCx5gU%2FbtsMgSozY9G%2FdVFKQBvytbxILOztpFpoQK%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;1876&quot; height=&quot;1125&quot; data-origin-width=&quot;1876&quot; data-origin-height=&quot;1125&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이기적 리눅스마스터 구매해서 봤는데 괜찮다. 파트별 개념설명 -&amp;gt; 파트별 문제 / 1차, 2차 실전 기출문제 등이 수록되어있다. (문제나 정답표기가 잘못된게 몇개 있긴함)&lt;/p&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;h3 data-ke-size=&quot;size23&quot;&gt;개념은 빠르게 이틀안에 돌리고 족보켜놓고 시험을 볼 것!!!!!&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1차 시험을 공부해서 보려는 생각을 버릴 것.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스도 종종 사용하고, 학부에서 UNIX System 과목 성적이 A였어서 1차 시험을 쉽게 생각했었다. 근데 수험서의 파트별 문제를 봤는데 너무 지엽적이어서 뭐지..이걸 다 외워..? 하면서 그제서야 구글링을 했는데 1차는 오픈북이고 심지어 형님들께서 족보도 만들어 놓으신것 아닌가.. &lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/ctHH0Y/btsMgO7ALp7/gwCXkk04kBxWrMbcfEtPEK/%EB%A6%AC%EB%88%85%EC%8A%A4%20%EB%A7%88%EC%8A%A4%ED%84%B0%202%EA%B8%89%201%EC%B0%A8%20%EC%A1%B1%EB%B3%B4.pdf?attach=1&amp;amp;knm=tfile.pdf&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;리눅스 마스터 2급 1차 족보.pdf&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.65MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&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;위 파일의 작성자는 본인이 아니고 온라인에 떠도는 족보인데 어떤 형님께서 작성하신지는 못찾았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://lunasword.tistory.com/129&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://lunasword.tistory.com/129&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1739445771233&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[리눅스 마스터 2급] 1차 기출문제&quot; data-og-description=&quot;| 공지 리눅스 마스터 2급 1차 기출문제를 정리하여 포스팅합니다. 제가 모든 부분을 다 알 수 없어 문제에 대한 답을 잘못 표기한 부분도 있다고 생각됩니다. 문제를 보시다가 답이 잘못 표기된 &quot; data-og-host=&quot;lunasword.tistory.com&quot; data-og-source-url=&quot;https://lunasword.tistory.com/129&quot; data-og-url=&quot;https://lunasword.tistory.com/129&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/81XVI/hyYck01Hjq/D9Hdy3DW8HsPfQXddkKOtk/img.png?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500,https://scrap.kakaocdn.net/dn/bNcOEY/hyYf1MiViW/TLyuFytuNKp8cqtoekFZF1/img.png?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500,https://scrap.kakaocdn.net/dn/pYBnt/hyYfUzDMdD/nEXYVWkq7SK5Ekjfs2GyT0/img.png?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500&quot;&gt;&lt;a href=&quot;https://lunasword.tistory.com/129&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://lunasword.tistory.com/129&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/81XVI/hyYck01Hjq/D9Hdy3DW8HsPfQXddkKOtk/img.png?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500,https://scrap.kakaocdn.net/dn/bNcOEY/hyYf1MiViW/TLyuFytuNKp8cqtoekFZF1/img.png?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500,https://scrap.kakaocdn.net/dn/pYBnt/hyYfUzDMdD/nEXYVWkq7SK5Ekjfs2GyT0/img.png?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500');&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;[리눅스 마스터 2급] 1차 기출문제&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;| 공지 리눅스 마스터 2급 1차 기출문제를 정리하여 포스팅합니다. 제가 모든 부분을 다 알 수 없어 문제에 대한 답을 잘못 표기한 부분도 있다고 생각됩니다. 문제를 보시다가 답이 잘못 표기된&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;lunasword.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://m.blog.naver.com/bliss_sg108/222357645084&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://m.blog.naver.com/bliss_sg108/222357645084&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1739445820182&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[리눅스마스터 2급] 1차 족보(3)&quot; data-og-description=&quot;ctrl + f 로 온라인 시험 문제 검색하시면 됩니다. 다음은 원격지 타임 서버에 설정된 시간을 확인하는 과...&quot; data-og-host=&quot;blog.naver.com&quot; data-og-source-url=&quot;https://m.blog.naver.com/bliss_sg108/222357645084&quot; data-og-url=&quot;https://blog.naver.com/bliss_sg108/222357645084&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/iAZ56/hyYajnGhsx/POaLdFfpcnWXmCfBjlFcF1/img.png?width=270&amp;amp;height=270&amp;amp;face=0_0_270_270&quot;&gt;&lt;a href=&quot;https://m.blog.naver.com/bliss_sg108/222357645084&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://m.blog.naver.com/bliss_sg108/222357645084&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/iAZ56/hyYajnGhsx/POaLdFfpcnWXmCfBjlFcF1/img.png?width=270&amp;amp;height=270&amp;amp;face=0_0_270_270');&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;[리눅스마스터 2급] 1차 족보(3)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;ctrl + f 로 온라인 시험 문제 검색하시면 됩니다. 다음은 원격지 타임 서버에 설정된 시간을 확인하는 과...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;blog.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://lolofather.tistory.com/5&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://lolofather.tistory.com/5&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1739445840437&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;리눅스 마스터 2급 1차 족보&quot; data-og-description=&quot;안녕하세요. 이전에 공부하려고 정리해 두었던 리눅스 마스터2급 1차 족보 입니다. 리눅스 마스터를 공부하시는 분들께 도움이 되었으면 좋겠습니다. 감사합니다. 1. bash 환경에서 아래 명령의 &quot; data-og-host=&quot;lolofather.tistory.com&quot; data-og-source-url=&quot;https://lolofather.tistory.com/5&quot; data-og-url=&quot;https://lolofather.tistory.com/5&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/c3KIBl/hyYfXC9wVf/V6cAbtbX1TfU3EJfBeoFg0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/f7MZ4/hyYcfS0lyX/6JswcegWwiW5KJYtPhn3x1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/cRmOf5/hyYcVNiCCm/YWK63f0k9MGEmMpFlOXuD0/img.jpg?width=1439&amp;amp;height=1421&amp;amp;face=0_0_1439_1421&quot;&gt;&lt;a href=&quot;https://lolofather.tistory.com/5&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://lolofather.tistory.com/5&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/c3KIBl/hyYfXC9wVf/V6cAbtbX1TfU3EJfBeoFg0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/f7MZ4/hyYcfS0lyX/6JswcegWwiW5KJYtPhn3x1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/cRmOf5/hyYcVNiCCm/YWK63f0k9MGEmMpFlOXuD0/img.jpg?width=1439&amp;amp;height=1421&amp;amp;face=0_0_1439_1421');&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;리눅스 마스터 2급 1차 족보&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이전에 공부하려고 정리해 두었던 리눅스 마스터2급 1차 족보 입니다. 리눅스 마스터를 공부하시는 분들께 도움이 되었으면 좋겠습니다. 감사합니다. 1. bash 환경에서 아래 명령의&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;lolofather.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 링크들은 &lt;a href=&quot;https://solearn.tistory.com/272&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://solearn.tistory.com/272&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1739446140595&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Linux] 리눅스마스터 2급 - 응시방법, 주의점, 꿀팁, 공부법 총정리&quot; data-og-description=&quot;일정응시방법1) 시험 접수&amp;nbsp;KAIT 자격검정시험접수 정보통신 자격검정 시험 원서등록을 하실 수 있습니다www.ihd.or.kr2) 시험&amp;nbsp;신청 방법 참고 족보준비 -&amp;gt; 온라인 시험 순으로 하시면 됩니다. 1.시험 &quot; data-og-host=&quot;solearn.tistory.com&quot; data-og-source-url=&quot;https://solearn.tistory.com/272&quot; data-og-url=&quot;https://solearn.tistory.com/272&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/2WXW7/hyYcgxbdAr/h6tiqVNKzkZ7Tr9dtBRoa0/img.png?width=800&amp;amp;height=609&amp;amp;face=0_0_800_609,https://scrap.kakaocdn.net/dn/c1UFnS/hyYf3chHjA/KJtOfKqyKUyfs3cAFhawz0/img.png?width=800&amp;amp;height=609&amp;amp;face=0_0_800_609,https://scrap.kakaocdn.net/dn/Uu9ry/hyYb6odoRj/AKIudGCwEDouxIVNMmrM1K/img.png?width=1618&amp;amp;height=1232&amp;amp;face=0_0_1618_1232&quot;&gt;&lt;a href=&quot;https://solearn.tistory.com/272&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://solearn.tistory.com/272&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/2WXW7/hyYcgxbdAr/h6tiqVNKzkZ7Tr9dtBRoa0/img.png?width=800&amp;amp;height=609&amp;amp;face=0_0_800_609,https://scrap.kakaocdn.net/dn/c1UFnS/hyYf3chHjA/KJtOfKqyKUyfs3cAFhawz0/img.png?width=800&amp;amp;height=609&amp;amp;face=0_0_800_609,https://scrap.kakaocdn.net/dn/Uu9ry/hyYb6odoRj/AKIudGCwEDouxIVNMmrM1K/img.png?width=1618&amp;amp;height=1232&amp;amp;face=0_0_1618_1232');&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;[Linux] 리눅스마스터 2급 - 응시방법, 주의점, 꿀팁, 공부법 총정리&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;일정응시방법1) 시험 접수&amp;nbsp;KAIT 자격검정시험접수 정보통신 자격검정 시험 원서등록을 하실 수 있습니다www.ihd.or.kr2) 시험&amp;nbsp;신청 방법 참고 족보준비 -&amp;gt; 온라인 시험 순으로 하시면 됩니다. 1.시험&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;solearn.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이분 블로그에서 얻어온 링크들이다!&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;b&gt;✨모든 문제를 위 pdf파일과 링크를 다 열어놓고 ctrl + f 로 키워드 검색해가면서 풀면 공부 하나도 안해도 1차 합격할 수 있다!!!!!&lt;/b&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1차 합격 인증&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1216&quot; data-origin-height=&quot;948&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4LFOE/btsMiqxDp7S/bebx9ny6Lpca7yzeeQpyhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4LFOE/btsMiqxDp7S/bebx9ny6Lpca7yzeeQpyhk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4LFOE/btsMiqxDp7S/bebx9ny6Lpca7yzeeQpyhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4LFOE%2FbtsMiqxDp7S%2Fbebx9ny6Lpca7yzeeQpyhk%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;1216&quot; height=&quot;948&quot; data-origin-width=&quot;1216&quot; data-origin-height=&quot;948&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>일상</category>
      <author>leequiett</author>
      <guid isPermaLink="true">https://leequiett.tistory.com/55</guid>
      <comments>https://leequiett.tistory.com/55#entry55comment</comments>
      <pubDate>Thu, 13 Feb 2025 20:38:48 +0900</pubDate>
    </item>
    <item>
      <title>3월 8일엔 꿀이 발려있는가?</title>
      <link>https://leequiett.tistory.com/54</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;SQLD 시험일 - 03.08 10:00&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1483&quot; data-origin-height=&quot;246&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Kn0ca/btsMiahvBvY/eNDBJpn2okX72twqotAIP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Kn0ca/btsMiahvBvY/eNDBJpn2okX72twqotAIP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Kn0ca/btsMiahvBvY/eNDBJpn2okX72twqotAIP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKn0ca%2FbtsMiahvBvY%2FeNDBJpn2okX72twqotAIP0%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;600&quot; height=&quot;100&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1483&quot; data-origin-height=&quot;246&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스마스터 2급 실기 시험일 - 03.08 14:00&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1196&quot; data-origin-height=&quot;240&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/A3nmc/btsMiZ0FFqB/Eh7yebGV2sK4k3eleUYOT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/A3nmc/btsMiZ0FFqB/Eh7yebGV2sK4k3eleUYOT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/A3nmc/btsMiZ0FFqB/Eh7yebGV2sK4k3eleUYOT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA3nmc%2FbtsMiZ0FFqB%2FEh7yebGV2sK4k3eleUYOT1%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;600&quot; height=&quot;120&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1196&quot; data-origin-height=&quot;240&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코레일 필기 시험일 - 03.08&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;947&quot; data-origin-height=&quot;792&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/S6RoY/btsMhv7xvaA/KKqgtFD90vImhNtPIxVGv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/S6RoY/btsMhv7xvaA/KKqgtFD90vImhNtPIxVGv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/S6RoY/btsMhv7xvaA/KKqgtFD90vImhNtPIxVGv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FS6RoY%2FbtsMhv7xvaA%2FKKqgtFD90vImhNtPIxVGv1%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;600&quot; height=&quot;502&quot; data-origin-width=&quot;947&quot; data-origin-height=&quot;792&quot;/&gt;&lt;/span&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;ncs준비는 해본적 없는데 모의고사 풀어보면서 성적 어느정도 나오면 코레일 시험치러 가고 아니면 자격증따러 가야겠다 ㅎㅎ 그나저나 3월 8일에 꿀을발라놨나...  &lt;/p&gt;</description>
      <category>일상</category>
      <author>leequiett</author>
      <guid isPermaLink="true">https://leequiett.tistory.com/54</guid>
      <comments>https://leequiett.tistory.com/54#entry54comment</comments>
      <pubDate>Thu, 13 Feb 2025 20:09:59 +0900</pubDate>
    </item>
    <item>
      <title>자바의 Try with resources</title>
      <link>https://leequiett.tistory.com/53</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;  자바의 Try-with-Resources란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 try-catch-finally 구문에서는 리소스를 닫기 위해 finally 블록을 사용해야 했지만, &lt;b&gt;try-with-resources&lt;/b&gt;를 사용하면 자동으로 리소스를 정리할 수 있다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;  Try-with-Resources의 개념&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;try-with-resources는 &lt;b&gt;자동으로 리소스를 닫아주는 기능을 제공&lt;/b&gt;하는 try 구문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용되는 리소스는 반드시 &lt;b&gt;AutoCloseable 인터페이스&lt;/b&gt;를 구현해야 한다.&lt;br /&gt;즉, close() 메서드를 가지고 있는 객체만 이 기능을 사용할 수 있다.&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;b&gt;대표적인 AutoCloseable 인터페이스 구현 클래스&lt;/b&gt;&lt;br /&gt;✅ BufferedReader, FileReader, FileInputStream 등 입출력 관련 클래스&lt;br /&gt;✅ Connection, Statement, ResultSet 등 데이터베이스 관련 클래스&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;  Try-with-Resources 예제&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;✅ 기존 try-catch-finally 방식&lt;/h4&gt;
&lt;pre class=&quot;processing&quot;&gt;&lt;code&gt;import java.io.*;

public class TryCatchFinallyExample {
    public static void main(String[] args) {
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader(&quot;test.txt&quot;));
            System.out.println(reader.readLine());
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (reader != null) {
                    reader.close(); // 리소스를 수동으로 닫아야 함
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;❌ finally 블록에서 직접 close()를 호출해야 하며, 예외 처리를 한 번 더 해야 한다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;✅ Try-with-Resources 사용 방식&lt;/h4&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;import java.io.*;

public class TryWithResourcesExample {
    public static void main(String[] args) {
        try (BufferedReader reader = new BufferedReader(new FileReader(&quot;test.txt&quot;))) {
            System.out.println(reader.readLine());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;✅ try 괄호 안에서 리소스를 선언하면 &lt;b&gt;자동으로 닫히기 때문에 finally 블록이 필요 없음&lt;/b&gt;&lt;br /&gt;✅ 코드가 훨씬 &lt;b&gt;간결하고 가독성이 좋아짐&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;  Try-with-Resources 내부 동작 원리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바의 Try-with-Resources는 다음과 같이 동작한다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;try 블록에서 &lt;b&gt;리소스를 생성&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;try 블록이 끝날 때 &lt;b&gt;자동으로 close() 호출&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;여러 개의 리소스도 동시에 처리 가능&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅ 여러 개의 리소스 관리 예제&lt;/h3&gt;
&lt;pre class=&quot;processing&quot;&gt;&lt;code&gt;import java.io.*;

public class MultipleResourcesExample {
    public static void main(String[] args) {
        try (
            BufferedReader reader1 = new BufferedReader(new FileReader(&quot;file1.txt&quot;));
            BufferedReader reader2 = new BufferedReader(new FileReader(&quot;file2.txt&quot;))
        ) {
            System.out.println(reader1.readLine());
            System.out.println(reader2.readLine());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;✅ 두 개의 BufferedReader를 사용했지만, &lt;b&gt;자동으로 닫히므로 finally가 필요 없음&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Try-with-Resources는 리소스를 자동으로 닫아주는 기능&lt;/b&gt;을 제공.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;AutoCloseable 인터페이스를 구현한 객체만 사용 가능&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;finally에서 직접 close()를 호출할 필요 없이 자동으로 정리&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;코드가 간결하고 가독성이 좋아져 유지보수가 쉬워진다.&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제부터는 &lt;b&gt;리소스를 사용할 때는 Try-with-Resources를 활용&lt;/b&gt;하여 안전한 코드 작성을 해보자!  &lt;/p&gt;</description>
      <category>프로그래밍 언어/Java</category>
      <author>leequiett</author>
      <guid isPermaLink="true">https://leequiett.tistory.com/53</guid>
      <comments>https://leequiett.tistory.com/53#entry53comment</comments>
      <pubDate>Wed, 12 Feb 2025 17:31:44 +0900</pubDate>
    </item>
    <item>
      <title>자바의 지역 변수 캡처(Local Variable Capture)</title>
      <link>https://leequiett.tistory.com/52</link>
      <description>&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;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무슨 말인가?&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;b&gt;클래스 변수&lt;/b&gt;: 프로그램 종료까지(메서드 영역)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클래스 변수(static 변수) 는 메서드 영역에 존재하고 클래스 정보를 읽어 들이는 순간부터 프로그램 종료까지 존재한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;인스턴스 변수&lt;/b&gt;: 인스턴스의 생존 기간(힙 영역)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인스턴스 변수는 본인이 소속된 인스턴스가 GC되기 전까지 존재한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;지역 변수&lt;/b&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;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;지역 변수 캡처 예제를 보자&lt;/h3&gt;
&lt;pre id=&quot;code_1739329533122&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class LocalOuterExample {
    public Printer createPrinter(String message) { // 매개 변수 (paramVar 역할)
        int localVar = 100; // 지역 변수 (메서드 내에서 선언)

        // 지역 내부 클래스
        class LocalPrinter implement Printer {
        	@Override
            public void print() {
                // 지역 변수 캡처 (변수 값이 변경되지 않으므로 사용 가능)
                System.out.println(&quot;Message: &quot; + message);
                System.out.println(&quot;Local Variable: &quot; + localVar);
            }
        }
		
        // print() 메서드를 실행하는 것이 아니라 LocalPrinter 인스턴스를 반환한다
        return new LocalPrinter();
    }

    public static void main(String[] args) {
        LocalOuterExample example = new LocalOuterExample();
        
        // createPrinter() 호출 후 Printer 객체 받기
        Printer printer = example.createPrinter(&quot;Hello, Java!&quot;);

        // createPrinter()의 스택 프레임이 사라진 이후에 print() 실행
        printer.print();
    }
}&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;createPrinter()는 LocalPrinter 인스턴스를 반환한다.&lt;/li&gt;
&lt;li&gt;LocalPrinter.print() 메서드를 createPrinter() 안에서 실행하는 것이 아니라 메서드가 종료된 이후에 main() 메서드에서 실행한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;지역 변수의 라이프사이클은 짧고, 지역 클래스를 통해 생성한 인스턴의 라이프사이클은 길다.&lt;/h3&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;h2 data-ke-size=&quot;size26&quot;&gt;지역 변수 캡처 마무리&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바는 이런 문제를 해결하기 위해 지역 클래스의 인스턴스를 생성하는 시점에 필요한 지역 변수를 복사해서 생성한 인스턴스에 넣어두는데, 이런 과정을 변수 캡처라고 한다.&lt;/p&gt;</description>
      <category>프로그래밍 언어/Java</category>
      <author>leequiett</author>
      <guid isPermaLink="true">https://leequiett.tistory.com/52</guid>
      <comments>https://leequiett.tistory.com/52#entry52comment</comments>
      <pubDate>Wed, 12 Feb 2025 14:49:15 +0900</pubDate>
    </item>
    <item>
      <title>중첩(Nested) 클래스</title>
      <link>https://leequiett.tistory.com/51</link>
      <description>&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;정적 중첩 클래스(static nested class)&lt;/li&gt;
&lt;li&gt;내부 클래스 종류
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;내부 클래스(inner class)&lt;/li&gt;
&lt;li&gt;지역 클래스(local class)&lt;/li&gt;
&lt;li&gt;익명 클래스(anonymous class)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;중첩 클래스의 선언 위치&lt;/h3&gt;
&lt;pre id=&quot;code_1739260121074&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Outer {
    //정적 중첩 클래스
    static class StaticNested {}
	
    //내부 클래스
    class Inner {}
    
    public void process() {
    	// 지역 클래스
        class Local {}
    }
}&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;중첩(Nested)와 내부(Inner)의 차이&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;중첩(Nested)은 바깥 클래스의 안에 있지만 바깥 클래스와 관계 없는 전혀 다른 클래스&lt;/li&gt;
&lt;li&gt;내부(Inner)는 바깥 클래스의 내부에 있으면서 바깥 클래스를 구성하는 요소&lt;/li&gt;
&lt;/ul&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;b&gt;논리적 그룹화&lt;/b&gt;: 클래스가 하나의 클래스 안에서만 사용되는 경우 해당 클래스 안에 포함하는 것이 논리적으로 그룹화가 된다. 패키지를 열었을때 외부에 필요없는 중첩 클래스가 노출되지 않는 장점도 있다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;캡슐화&lt;/b&gt;: 중첩 클래스는 바깥 클래스의 private 멤버에 접근할 수 있으니 이를 통해 불필요한 public 메서드를 제거할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;참고 - 실무에선&lt;/b&gt;&lt;br /&gt;실무에서는 중첩, 내부라는 단어를 엄밀히 구분하지 않고 사용하기 때문에 문맥에 따라 이해하면 된대요~&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍 언어/Java</category>
      <author>leequiett</author>
      <guid isPermaLink="true">https://leequiett.tistory.com/51</guid>
      <comments>https://leequiett.tistory.com/51#entry51comment</comments>
      <pubDate>Tue, 11 Feb 2025 16:54:05 +0900</pubDate>
    </item>
    <item>
      <title>자바 변수의 종류와 필드</title>
      <link>https://leequiett.tistory.com/50</link>
      <description>&lt;h2 data-end=&quot;16&quot; data-start=&quot;0&quot; data-ke-size=&quot;size26&quot;&gt;  자바 변수의 종류&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 140px;&quot; border=&quot;1&quot; data-end=&quot;425&quot; data-start=&quot;18&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody data-end=&quot;425&quot; data-start=&quot;114&quot;&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;변수 종류&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;선언 위치&lt;/td&gt;
&lt;td&gt;사용 범위&lt;/td&gt;
&lt;td&gt;자동 초기화 여부&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 40px;&quot; data-end=&quot;201&quot; data-start=&quot;114&quot;&gt;
&lt;td style=&quot;height: 40px;&quot;&gt;&lt;b&gt;클래스 변수 (static 변수)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 40px;&quot;&gt;클래스 내부, static 키워드 사용&lt;/td&gt;
&lt;td style=&quot;height: 40px;&quot;&gt;프로그램 종료 시까지 유지&lt;/td&gt;
&lt;td style=&quot;height: 40px;&quot;&gt;O (기본값으로 초기화)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 40px;&quot; data-end=&quot;278&quot; data-start=&quot;202&quot;&gt;
&lt;td style=&quot;height: 40px;&quot;&gt;&lt;b&gt;인스턴스 변수&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 40px;&quot;&gt;클래스 내부&lt;/td&gt;
&lt;td style=&quot;height: 40px;&quot;&gt;객체가 생성될 때 초기화, 객체가 사라지면 소멸&lt;/td&gt;
&lt;td style=&quot;height: 40px;&quot;&gt;O (기본값으로 초기화)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot; data-end=&quot;348&quot; data-start=&quot;279&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;&lt;b&gt;지역 변수&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;메서드 내부 또는 블록 내부&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;선언된 블록 내에서만 사용 가능&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;X (직접 초기화 필요)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 40px;&quot; data-end=&quot;425&quot; data-start=&quot;349&quot;&gt;
&lt;td style=&quot;height: 40px;&quot;&gt;&lt;b&gt;매개 변수&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 40px;&quot;&gt;메서드의 매개변수로 선언&lt;/td&gt;
&lt;td style=&quot;height: 40px;&quot;&gt;메서드 호출 시 생성, 종료 시 소멸&lt;/td&gt;
&lt;td style=&quot;height: 40px;&quot;&gt;X (메서드 호출 시 값이 전달됨)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 data-end=&quot;1107&quot; data-start=&quot;1088&quot; data-ke-size=&quot;size26&quot;&gt;  필드 (Field)란?&lt;/h2&gt;
&lt;p data-end=&quot;1217&quot; data-start=&quot;1108&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;필드&lt;/b&gt;는 클래스 내부에서 선언된 변수로, 인스턴스 변수와 클래스 변수(정적 변수)가 포함된다.&lt;br /&gt;필드는 객체의 상태를 저장하는 역할을 하며, 클래스 내부에서 메서드와 함께 사용된다.&lt;/p&gt;
&lt;h3 data-end=&quot;1233&quot; data-start=&quot;1219&quot; data-ke-size=&quot;size23&quot;&gt;  필드의 특징&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1431&quot; data-start=&quot;1234&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1318&quot; data-start=&quot;1234&quot;&gt;&lt;b&gt;자동 초기화&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1318&quot; data-start=&quot;1253&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1263&quot; data-start=&quot;1253&quot;&gt;정수형: 0&lt;/li&gt;
&lt;li data-end=&quot;1279&quot; data-start=&quot;1267&quot;&gt;실수형: 0.0&lt;/li&gt;
&lt;li data-end=&quot;1297&quot; data-start=&quot;1283&quot;&gt;논리형: false&lt;/li&gt;
&lt;li data-end=&quot;1314&quot; data-start=&quot;1301&quot;&gt;참조형: null&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1384&quot; data-start=&quot;1319&quot;&gt;&lt;b&gt;접근 제한자 사용 가능&lt;/b&gt; (private, public, protected, default)&lt;b&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>프로그래밍 언어/Java</category>
      <author>leequiett</author>
      <guid isPermaLink="true">https://leequiett.tistory.com/50</guid>
      <comments>https://leequiett.tistory.com/50#entry50comment</comments>
      <pubDate>Tue, 11 Feb 2025 16:40:28 +0900</pubDate>
    </item>
    <item>
      <title>HTML 태그 정리</title>
      <link>https://leequiett.tistory.com/49</link>
      <description>&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 110px;&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;td&gt;비고&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;&amp;lt;h1&amp;gt;&amp;nbsp;~&amp;nbsp;&amp;lt;h6&amp;gt;&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;제목&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;숫자가 높을 수록 낮은 단계&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;&amp;lt;p&amp;gt;&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;문단&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;각각 줄바꿈이 됨 (기본 스타일일 때)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;&amp;lt;br&amp;gt;&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;줄바꿈&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;닫는 태그 필요 없음.&amp;nbsp;&amp;lt;br/&amp;gt;,&amp;nbsp;&amp;lt;br /&amp;gt;와 혼용되기도 함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;&amp;lt;hr&amp;gt;&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;가로줄&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;닫는 태그 필요 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;&amp;amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;공백 (스페이스)&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;스페이스를 강제할 때 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 90px;&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;td&gt;비고&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;b&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;글자를 굵게&amp;nbsp;(구버전 HTML)&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTML/Element/b#%EC%82%AC%EC%9A%A9_%EC%9D%BC%EB%9E%8C&quot;&gt;  사용 일람 보기&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;strong&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;중요한 내용임을 명시&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;i&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;글자를 기울임&amp;nbsp;(구버전 HTML)&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTML/Element/i#%EC%82%AC%EC%9A%A9_%EC%9D%BC%EB%9E%8C&quot;&gt;  사용 일람 보기&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;em&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;기울이며 강조할 내용임을 명시&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 50px;&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;td&gt;비고&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;&amp;lt;sup&amp;gt;&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;위 첨자&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;지수, 서수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;&amp;lt;sub&amp;gt;&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;아래 첨자&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;각주, 변수, 화학식&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 50px;&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;td&gt;비고&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;&amp;lt;u&amp;gt;&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;철자 오류 표시&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;예전에는 밑줄 용도로 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;&amp;lt;s&amp;gt;&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;더 이상 유효하지 않은 정보 표시&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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&gt;문자&lt;/td&gt;
&lt;td&gt;Entity name&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;&lt;/td&gt;
&lt;td&gt;&amp;amp;lt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;gt;&lt;/td&gt;
&lt;td&gt;&amp;amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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&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;&amp;lt;blockquote&amp;gt;&lt;/td&gt;
&lt;td&gt;비교적 긴 인용문에 사용&lt;/td&gt;
&lt;td&gt;cite&amp;nbsp;속성으로 출처 표시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;cite&amp;gt;&lt;/td&gt;
&lt;td&gt;저작물의 출처 표기&lt;/td&gt;
&lt;td&gt;&lt;b&gt;제목&lt;/b&gt;을 반드시 포함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;q&amp;gt;&lt;/td&gt;
&lt;td&gt;비교적 짧은 인용문에 사용&lt;/td&gt;
&lt;td&gt;cite&amp;nbsp;속성으로 출처 표시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;mark&amp;gt;&lt;/td&gt;
&lt;td&gt;인용문 중 하이라이트 또는 사용자 행동과 연관된 곳 표시&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;태그 설명 비고&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&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;&amp;lt;abbr&amp;gt;&lt;/td&gt;
&lt;td&gt;준말/머릿글자 표시&lt;/td&gt;
&lt;td&gt;title&amp;nbsp;속성으로 원래 형태 표시&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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&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;&amp;lt;ul&amp;gt;&lt;/td&gt;
&lt;td&gt;순서가 없는 목록&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;ol&amp;gt;&lt;/td&gt;
&lt;td&gt;순서가 있는 목록&lt;/td&gt;
&lt;td&gt;type,&amp;nbsp;start&amp;nbsp;속성 사용 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;li&amp;gt;&lt;/td&gt;
&lt;td&gt;목록 아이템&lt;/td&gt;
&lt;td&gt;ul,&amp;nbsp;ol&amp;nbsp;태그의 1촌 자식으로 이 태그만 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;dl&amp;gt;&lt;/td&gt;
&lt;td&gt;Description-List&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://velog.io/@raram2/dl-dt-dd는-언제-쓰는-걸까&quot;&gt;https://velog.io/@raram2/dl-dt-dd는-언제-쓰는-걸까&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;dt&amp;gt;&lt;/td&gt;
&lt;td&gt;Description-Term&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;dd&amp;gt;&lt;/td&gt;
&lt;td&gt;Description-Description&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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&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;src&lt;/td&gt;
&lt;td&gt;원본파일 경로&lt;/td&gt;
&lt;td&gt;절대경로 또는 상대경로&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;alt&lt;/td&gt;
&lt;td&gt;대체 텍스트&lt;/td&gt;
&lt;td&gt;스크린 리더, 원본파일 무효시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;title&lt;/td&gt;
&lt;td&gt;툴팁&lt;/td&gt;
&lt;td&gt;alt의 대체제나 반복이 되어서는 안됨&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;width&lt;/td&gt;
&lt;td&gt;너비&lt;/td&gt;
&lt;td&gt;픽셀 단위의 정수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;height&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;pre class=&quot;routeros&quot;&gt;&lt;code&gt;&amp;lt;img src=&quot;(이미지 파일 경로)&quot; alt=&quot;(대체 텍스트)&quot; title=&quot;(툴팁 텍스트)&quot;&amp;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;&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;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;td&gt;비고&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;table&amp;gt;&lt;/td&gt;
&lt;td&gt;테이블&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;caption&amp;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;&amp;lt;tr&amp;gt;&lt;/td&gt;
&lt;td&gt;테이블의 행&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;td&amp;gt;&lt;/td&gt;
&lt;td&gt;테이블의 데이터 셀&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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&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;&amp;lt;thead&amp;gt;&lt;/td&gt;
&lt;td&gt;테이블의 헤더 부분&lt;/td&gt;
&lt;td&gt;&amp;lt;tbody&amp;gt;&amp;nbsp;앞에 와야 함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;tbody&amp;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;&amp;lt;tfoot&amp;gt;&lt;/td&gt;
&lt;td&gt;테이블의 푸터 부분&lt;/td&gt;
&lt;td&gt;&amp;lt;tbody&amp;gt;&amp;nbsp;뒤에 와야 함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;th&amp;gt;&lt;/td&gt;
&lt;td&gt;열 또는 행의 헤더&lt;/td&gt;
&lt;td&gt;scope&amp;nbsp;속성으로&amp;nbsp;row,&amp;nbsp;col&amp;nbsp;중 선택&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://zetawiki.com/wiki/HTML_table,_tr,_th,_td_%ED%83%9C%EA%B7%B8&quot;&gt;HTML table, tr, th, td 태그&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1738482594663&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;HTML table, tr, th, td 태그 - 제타위키&quot; data-og-description=&quot;다음 문자열 포함...&quot; data-og-host=&quot;zetawiki.com&quot; data-og-source-url=&quot;https://zetawiki.com/wiki/HTML_table,_tr,_th,_td_%ED%83%9C%EA%B7%B8&quot; data-og-url=&quot;https://zetawiki.com/wiki/HTML_table,_tr,_th,_td_%ED%83%9C%EA%B7%B8&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://zetawiki.com/wiki/HTML_table,_tr,_th,_td_%ED%83%9C%EA%B7%B8&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://zetawiki.com/wiki/HTML_table,_tr,_th,_td_%ED%83%9C%EA%B7%B8&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;HTML table, tr, th, td 태그 - 제타위키&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;다음 문자열 포함...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;zetawiki.com&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 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&gt;속성&lt;/td&gt;
&lt;td&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;colspan&lt;/td&gt;
&lt;td&gt;열 병합&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rowspan&lt;/td&gt;
&lt;td&gt;행 병합&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 30px;&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;td&gt;비고&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;colgroup&amp;gt;&lt;/td&gt;
&lt;td&gt;표에 열을 묶어서 속성 부여&lt;/td&gt;
&lt;td&gt;&amp;lt;caption&amp;gt;보다 뒤, 그 외 요소보다 앞에 와야 함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;&amp;lt;col&amp;gt;&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;열의 묶음&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;span&amp;nbsp;속성으로 열 수 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;&amp;lt;a href=&quot;(연결할 주소)&quot; target=&quot;(링크를 열 곳 옵션)&quot;&amp;gt;
&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&gt;target 속성값&lt;/td&gt;
&lt;td&gt;설명&lt;/td&gt;
&lt;td&gt;비고&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;_self&lt;/td&gt;
&lt;td&gt;현재 창&lt;/td&gt;
&lt;td&gt;기본&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;_blank&lt;/td&gt;
&lt;td&gt;새 창&lt;/td&gt;
&lt;td&gt;텍스트나 내부 이미지의&amp;nbsp;alt&amp;nbsp;등으로 명시 필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;_parent&lt;/td&gt;
&lt;td&gt;부모 프레임&lt;/td&gt;
&lt;td&gt;&amp;lt;iframe&amp;gt;&amp;nbsp;사용시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;_top&lt;/td&gt;
&lt;td&gt;최상위 프레임&lt;/td&gt;
&lt;td&gt;&amp;lt;iframe&amp;gt;&amp;nbsp;사용시&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;pre class=&quot;typescript&quot; data-ke-language=&quot;typescript&quot;&gt;&lt;code&gt;&amp;lt;a href=&quot;https://www.yalco.kr&quot; target=&quot;_blank&quot;&amp;gt;
    &amp;lt;img src=&quot;./yalco-logo.png&quot; alt=&quot;얄코 사이트로 (새 탭에서)&quot;&amp;gt;
  &amp;lt;/a&amp;gt;&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;id값을 사용한 요소로의 이동&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;href값에&amp;nbsp;#(id값)을 넣음&lt;/li&gt;
&lt;li&gt;&lt;b&gt;타 사이트&lt;/b&gt;의 특정 요소로도 가능 -&amp;nbsp;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTML/Element/a#%EA%B1%B4%EB%84%88%EB%9B%B0%EA%B8%B0_%EB%A7%81%ED%81%AC&quot;&gt;  예시 링크&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1738482760188&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;&amp;lt;a&amp;gt; - HTML: Hypertext Markup Language | MDN&quot; data-og-description=&quot;HTML &amp;lt;a&amp;gt; 요소(앵커 요소)는 href 특성을 통해 다른 페이지나 같은 페이지의 어느 위치, 파일, 이메일 주소와 그 외 다른 URL로 연결할 수 있는 하이퍼링크를 만듭니다. &amp;lt;a&amp;gt; 안의 콘텐츠는 링크 목적지&quot; data-og-host=&quot;developer.mozilla.org&quot; data-og-source-url=&quot;https://developer.mozilla.org/ko/docs/Web/HTML/Element/a#%EA%B1%B4%EB%84%88%EB%9B%B0%EA%B8%B0_%EB%A7%81%ED%81%AC&quot; data-og-url=&quot;https://developer.mozilla.org/ko/docs/Web/HTML/Element/a&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ciwbLG/hyX74wI1fE/HY6WjsmaVndCUMcJxVeNrK/img.png?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTML/Element/a#%EA%B1%B4%EB%84%88%EB%9B%B0%EA%B8%B0_%EB%A7%81%ED%81%AC&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.mozilla.org/ko/docs/Web/HTML/Element/a#%EA%B1%B4%EB%84%88%EB%9B%B0%EA%B8%B0_%EB%A7%81%ED%81%AC&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ciwbLG/hyX74wI1fE/HY6WjsmaVndCUMcJxVeNrK/img.png?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080');&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;&amp;lt;a&amp;gt; - HTML: Hypertext Markup Language | MDN&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;HTML &amp;lt;a&amp;gt; 요소(앵커 요소)는 href 특성을 통해 다른 페이지나 같은 페이지의 어느 위치, 파일, 이메일 주소와 그 외 다른 URL로 연결할 수 있는 하이퍼링크를 만듭니다. &amp;lt;a&amp;gt; 안의 콘텐츠는 링크 목적지&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developer.mozilla.org&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&amp;lt;address&amp;gt; 태그&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주소 및 연락처 정보를 포함&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;href&amp;nbsp;값 앞부분&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;mailto:&amp;nbsp;- 이메일 링크&lt;/li&gt;
&lt;li&gt;tel:&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 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&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;&amp;lt;form&amp;gt;&lt;/td&gt;
&lt;td&gt;정보를 제출하기 위한 태그들을 포함&lt;/td&gt;
&lt;td&gt;autocomplete&amp;nbsp;속성: 자동완성 여부 (기본:&amp;nbsp;on)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;input&amp;gt;&lt;/td&gt;
&lt;td&gt;입력을 받는 요소&lt;/td&gt;
&lt;td&gt;type&amp;nbsp;속성을 통해 다양화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;label&amp;gt;&lt;/td&gt;
&lt;td&gt;인풋 요소마다의 라벨&lt;/td&gt;
&lt;td&gt;for&amp;nbsp;속성값을 인풋 요소의&amp;nbsp;id와 연결. 인풋의&amp;nbsp;&lt;b&gt;클릭 영역 확장&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;button&amp;gt;&lt;/td&gt;
&lt;td&gt;버튼&lt;/td&gt;
&lt;td&gt;type&amp;nbsp;속성에&amp;nbsp;submit(제출),&amp;nbsp;reset(초기화),&amp;nbsp;button(기본 동작 없음)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTML/Element/Input&quot;&gt; &amp;nbsp;&amp;lt;input&amp;gt;의 타입과 속성들 보기&lt;/a&gt;&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;b&gt;텍스트 관련 인풋 속성들&lt;/b&gt;&lt;/h3&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;td&gt;비고&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;placeholder&lt;/td&gt;
&lt;td&gt;빈 칸에 보이는 안내문&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;maxlength&lt;/td&gt;
&lt;td&gt;최대 길이&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;minlength&lt;/td&gt;
&lt;td&gt;최소 길이&lt;/td&gt;
&lt;td&gt;위반시&amp;nbsp;submit이 거부됨&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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&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;&amp;lt;fieldset&amp;gt;&lt;/td&gt;
&lt;td&gt;폼 태그 내 입력요소와 라벨들을 그룹화&lt;/td&gt;
&lt;td&gt;disabled&amp;nbsp;속성: 포함된 입력요소 비활성화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;legend&amp;gt;&lt;/td&gt;
&lt;td&gt;필드셋 요소의 제목 또는 설명&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;숫자 관련 인풋 속성들&lt;/b&gt;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 70px;&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;td&gt;비고&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;min&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;최소값&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;date&amp;nbsp;등 타입마다 형식 다름&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;max&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;최대값&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;date&amp;nbsp;등 타입마다 형식 다름&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;step&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;간격&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;시간&amp;middot;날짜 관련 다른 타입들&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; &amp;nbsp;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/datetime-local&quot;&gt;datetime-local&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/month&quot;&gt;month&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/time&quot;&gt;time&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/week&quot;&gt;week&lt;/a&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;체크 관련 인풋 속성들&lt;/b&gt;&lt;/h3&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;td&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;checked&lt;/td&gt;
&lt;td&gt;체크박스 &amp;amp; 라디오&lt;/td&gt;
&lt;td&gt;체크됨 여부&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;name&lt;/td&gt;
&lt;td&gt;라디오&amp;nbsp;(다른 타입들에서도 사용)&lt;/td&gt;
&lt;td&gt;옵션들의 그룹으로 사용됨&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;value&lt;/td&gt;
&lt;td&gt;라디오&amp;nbsp;(다른 타입들에서도 사용)&lt;/td&gt;
&lt;td&gt;각 옵션마다 실제로 넘겨질 값&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;파일 인풋 속성들&lt;/b&gt;&lt;/h3&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;td&gt;참조&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;accept&lt;/td&gt;
&lt;td&gt;받아들일 수 있는 파일 형식&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTML/Element/Input/file#%EA%B3%A0%EC%9C%A0_%ED%8C%8C%EC%9D%BC_%EC%9C%A0%ED%98%95_%EC%A7%80%EC%A0%95%EC%9E%90&quot;&gt;  작성 가이드&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;multiple&lt;/td&gt;
&lt;td&gt;여러 파일 업로드 가능 여부&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_Untitled.png&quot; data-origin-width=&quot;263&quot; data-origin-height=&quot;479&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RpMqV/btsL4xYvlIh/aB4jVvUbAIC8GiKMfVMNxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RpMqV/btsL4xYvlIh/aB4jVvUbAIC8GiKMfVMNxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RpMqV/btsL4xYvlIh/aB4jVvUbAIC8GiKMfVMNxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRpMqV%2FbtsL4xYvlIh%2FaB4jVvUbAIC8GiKMfVMNxK%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;263&quot; height=&quot;479&quot; data-filename=&quot;edited_Untitled.png&quot; data-origin-width=&quot;263&quot; data-origin-height=&quot;479&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&amp;lt;textarea&amp;gt; 전용 속성들&lt;/b&gt;&lt;/h3&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;td&gt;비고&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cols&lt;/td&gt;
&lt;td&gt;글자수 단위의 너비&lt;/td&gt;
&lt;td&gt;기본값 20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rows&lt;/td&gt;
&lt;td&gt;표시되는 줄 수&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;lt;textarea&amp;gt;는 기본값을&amp;nbsp;value&amp;nbsp;속성이 아닌 컨텐츠로 입력&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTML/Element/textarea&quot;&gt;  기타 사용가능한 속성들 보기&lt;/a&gt;&lt;/li&gt;
&lt;/ul&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;옵션 관련 속성들&lt;/b&gt;&lt;/h3&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;td&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;multiple&lt;/td&gt;
&lt;td&gt;&amp;lt;select&amp;gt;&lt;/td&gt;
&lt;td&gt;다중 선택 가능. 드랍다운 대신 상자로 표시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;selected&lt;/td&gt;
&lt;td&gt;&amp;lt;option&amp;gt;&lt;/td&gt;
&lt;td&gt;선택됨&amp;nbsp;( checkbox, radio의 checked처럼 )&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;value&lt;/td&gt;
&lt;td&gt;&amp;lt;option&amp;gt;&lt;/td&gt;
&lt;td&gt;실제로 전송될 값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;list&lt;/td&gt;
&lt;td&gt;&amp;lt;input&amp;gt;&lt;/td&gt;
&lt;td&gt;연결할&amp;nbsp;&amp;lt;datalist&amp;gt;의 ID&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&amp;lt;progress&amp;gt;&amp;nbsp;태그 속성들&lt;/b&gt;&lt;/h3&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;td&gt;비고&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;max&lt;/td&gt;
&lt;td&gt;최대값&lt;/td&gt;
&lt;td&gt;기본: 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;value&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&amp;lt;meter&amp;gt;&amp;nbsp;태그 속성들&lt;/b&gt;&lt;/h3&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;td&gt;비고&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;min,&amp;nbsp;max&lt;/td&gt;
&lt;td&gt;최소값과 최대값&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;low,&amp;nbsp;high&lt;/td&gt;
&lt;td&gt;전체 범위를 3등분하는 두 수치&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;optimum&lt;/td&gt;
&lt;td&gt;이상적인 값&lt;/td&gt;
&lt;td&gt;3개의 구간 중 한 곳에 위치&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;value&lt;/td&gt;
&lt;td&gt;실제 값&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;pre 태그&lt;/b&gt;&lt;/h3&gt;
&lt;pre class=&quot;erlang&quot;&gt;&lt;code&gt;pre 태그에 텍스트를 작성하면 스페이스, 탭, 엔터 등
모든 공백 요소들이 이와 같이 화면에 그대로 적용됩니다.
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;기타 알아둘만한 태그들&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;kbd 태그는 Ctrl + C 와 같이 키보드 입력을 나타낼 때 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;dfn 태그는 특정 맥락에서 정의, 설명하고 있는 용어를 나타낼 때 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;small 태그는 이와 같이 텍스트를 작게 표시하는데 사용&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;아무것도 하지 않는 두 태그&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;span 태그 1&amp;nbsp;span 태그 2&amp;nbsp;span 태그 3&amp;nbsp;span 태그 4&amp;nbsp;span 태그 5&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;div 태그 1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;div 태그 2&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;div 태그 3&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;div 태그 4&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;div 태그 5&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;span&amp;gt;과&amp;nbsp;&amp;lt;div&amp;gt;는 특별한 기능이 없는 컨텐츠&amp;nbsp;&lt;b&gt;주머니이다&lt;/b&gt;.이 둘의 차이는 주머니의 &lt;b&gt;모양&lt;/b&gt;과&amp;nbsp;&lt;b&gt;차지하는 공간&lt;/b&gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;strong&amp;gt;,&amp;nbsp;&amp;lt;em&amp;gt;,&amp;nbsp;&amp;lt;a&amp;gt;&amp;nbsp;등의 태그에서 기능을 빼면&amp;nbsp;&amp;lt;span&amp;gt;,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;h1~6&amp;gt;, &amp;lt;p&amp;gt;, &amp;lt;ul&amp;gt; 등의 태그에서 기능을 빼면 &amp;lt;div&amp;gt;가 됨.&lt;/p&gt;</description>
      <category>프론트엔드</category>
      <author>leequiett</author>
      <guid isPermaLink="true">https://leequiett.tistory.com/49</guid>
      <comments>https://leequiett.tistory.com/49#entry49comment</comments>
      <pubDate>Mon, 3 Feb 2025 00:13:35 +0900</pubDate>
    </item>
  </channel>
</rss>