<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>jaehyung-eun.log</title>
        <link>https://velog.io/</link>
        <description>한양대학교 은재형</description>
        <lastBuildDate>Sun, 22 Jan 2023 16:49:42 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>jaehyung-eun.log</title>
            <url>https://velog.velcdn.com/images/jaehyung-eun/profile/3b43799f-c477-4ba5-b7a6-a5bcb2cbaa35/social_profile.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. jaehyung-eun.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/jaehyung-eun" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[문서작성 환경 설정]]></title>
            <link>https://velog.io/@jaehyung-eun/%EB%AC%B8%EC%84%9C%EC%9E%91%EC%84%B1-%ED%99%98%EA%B2%BD-%EC%84%A4%EC%A0%95</link>
            <guid>https://velog.io/@jaehyung-eun/%EB%AC%B8%EC%84%9C%EC%9E%91%EC%84%B1-%ED%99%98%EA%B2%BD-%EC%84%A4%EC%A0%95</guid>
            <pubDate>Sun, 22 Jan 2023 16:49:42 GMT</pubDate>
            <description><![CDATA[<h2 id="texlive-설치">texlive 설치</h2>
<p>2014년이후 texlive에 ko.TeX가 포함되었다.</p>
<p>이제는 texlive를 설치하는 것 만으로 한글 문서 작성을 할 수 있다.</p>
<p>Ubuntu에서 texlive를 설치하는 방법은 간단하다.</p>
<pre><code class="language-shell">sudo apt install texlive-full</code></pre>
<p>다른 운영체제에서 설치하고 싶다면 아래 문서를 참고하기 바란다.</p>
<p><a href="http://www.ktug.org/xe/?mid=Install">http://www.ktug.org/xe/?mid=Install</a></p>
<hr>
<h2 id="vscode-설치">VSCode 설치</h2>
<p>VSCode를 설치하기 위해서는 repository를 추가해야 한다.</p>
<pre><code class="language-shell">sudo apt install wget gpg -y

wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor &gt; packages.microsoft.gpg

sudo install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg

sudo sh -c &#39;echo &quot;deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main&quot; &gt; /etc/apt/sources.list.d/vscode.list&#39;

rm -f packages.microsoft.gpg</code></pre>
<p>package cache를 업데이트한 후 설치하면 된다.</p>
<pre><code class="language-shell">sudo apt install apt-transport-https

sudo apt update

sudo apt install code</code></pre>
<hr>
<h2 id="latex-workshop-설치">LaTeX Workshop 설치</h2>
<ol>
<li><p>VSCode의 오른쪽 메뉴 중 extensions를 선택한다. (단축키: <code>ctrl</code> + <code>shift</code> + <code>x</code>)</p>
</li>
<li><p><code>latex</code>을 검색하면 두 번째 정도에 LaTeX Workshop이 등장한다.</p>
</li>
<li><p><code>install</code> 버튼을 누르면 설치가 완료된다.</p>
</li>
</ol>
<p><img src="https://velog.velcdn.com/images/jaehyung-eun/post/c9c3ce67-def2-48db-a0a5-4ee5f7774c5d/image.png" alt="vscode-latex-workshop-01"></p>
<hr>
<h2 id="발표자료-샘플-출력해보기">발표자료 샘플 출력해보기</h2>
<ol>
<li><p>아래 링크에서 <code>Download Template Code</code>를 클릭하면 TeX 파일을 받을 수 있다.</p>
<p> <a href="https://www.latextemplates.com/template/beamer-presentation">https://www.latextemplates.com/template/beamer-presentation</a></p>
</li>
<li><p>VScode에서 파일을 열면 코드를 확인해볼 수 있다.</p>
<ul>
<li><p>오른쪽 상단의 <code>Build</code> 버튼을 누르면 pdf 파일을 만들 수 있다. (단축키: <code>ctrl</code> + <code>alt</code> + <code>b</code>)</p>
</li>
<li><p><code>Build</code> 버튼 옆의 <code>View LaTeX PDF file</code> 버튼을 누르면 pdf 파일을 볼 수 있다. (단축키: <code>ctrl</code> + <code>alt</code> + <code>v</code>)</p>
<p><img src="https://velog.velcdn.com/images/jaehyung-eun/post/395e7ea9-28da-470a-ae49-5c8fb1328a42/image.png" alt="vscode-latex-workshop-02"></p>
</li>
</ul>
</li>
<li><p>아래 그림과 같이 코드를 작성하며 결과를 바로 확인할 수 있다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/8ffe19af-6734-4b2d-9445-57311a1b011d/image.png" alt="vscode-latex-workshop-03"></p>
</li>
<li><p><code>\usepackage{kotex}</code>를 이용해 kotex 패키지를 불러오면 한글을 사용할 수 있다.</p>
<ul>
<li><p>아래 그림과 같이 타이틀을 테스트로 바꾸었을 때 정상 출력하는 것을 확인할 수 있다.</p>
<p><img src="https://velog.velcdn.com/images/jaehyung-eun/post/315a59b4-716f-432e-9f32-c8a03bc2d929/image.png" alt="kotex-test"></p>
</li>
</ul>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[Ubuntu 22.04 LTS 가상머신 설치 및 설정 방법]]></title>
            <link>https://velog.io/@jaehyung-eun/Virtual-Box-Ubuntu-%EC%84%A4%EC%B9%98</link>
            <guid>https://velog.io/@jaehyung-eun/Virtual-Box-Ubuntu-%EC%84%A4%EC%B9%98</guid>
            <pubDate>Sun, 22 Jan 2023 09:13:05 GMT</pubDate>
            <description><![CDATA[<h1 id="virtualbox--ubuntu-설치">VirtualBox + Ubuntu 설치</h1>
<h2 id="ubuntu-다운로드">Ubuntu 다운로드</h2>
<ol>
<li><p>Ubuntu 홈페이지의 Downloads 메뉴에 접속한다.</p>
<p> <a href="https://ubuntu.com/#download">https://ubuntu.com/#download</a></p>
</li>
<li><p>원하는 버전의 Ubuntu를 선택한다.</p>
<p> 처음 설치한다면 LTS(Long-Term Support) 버전을 추천한다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/a56ac2fb-d979-4d24-9901-289f1874d052/image.png" alt="ubuntu-download"></p>
</li>
</ol>
<hr>
<h2 id="virtualbox-설치">VirtualBox 설치</h2>
<ol>
<li><p>VirtualBox 홈페이지의 Downloads 메뉴에 접속한다.</p>
<p> <a href="https://www.virtualbox.org/wiki/Downloads">https://www.virtualbox.org/wiki/Downloads</a></p>
</li>
<li><p>설치 환경에 맞추어 패키지를 다운로드 한다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/e66c798c-9557-4f3c-96f4-beedccf1f430/image.png" alt="virtualbox-download"></p>
<ul>
<li><p>만일 운영체제로 Windows를 사용하고 있다면 Windows hosts를 눌러 패키지를 받는다.</p>
</li>
<li><p>만일 운영체제로 macOS를 사용하고 있다면, 칩셋에 맞추어 패키지를 받는다.</p>
</li>
</ul>
</li>
</ol>
<ol start="3">
<li><p>특별한 설정이 필요하지 않다면 <code>Next</code> 버튼을 반복해서 누른다.</p>
</li>
<li><p>설치를 완료하면 <code>Finish</code> 버튼을 누른다.</p>
</li>
</ol>
<hr>
<h2 id="가상머신-만들기">가상머신 만들기</h2>
<ol>
<li><p>VirtualBox Manager에서 <code>새로 만들기</code> 버튼을 누른다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/e25adf24-20d9-49e8-9bd3-68615a81d99b/image.png" alt="virtualbox-addnew-01"></p>
</li>
<li><p>각 칸에 정보들을 채워 넣고 <code>다음</code> 버튼을 누른다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/8896ebb0-0ab8-4847-aad0-5eefafd0c4da/image.png" alt="virtualbox-addnew-02"></p>
<ul>
<li><p>첫 번째 칸에는 새로운 가상머신의 이름을 입력한다.</p>
</li>
<li><p>두 번재 칸에는 가상머신을 저장할 디렉터리를 선택한다.</p>
</li>
<li><p>세 번재 칸에는 앞서 다운로드 한 Ubuntu 이미지 파일을 선택한다.</p>
</li>
</ul>
</li>
<li><p>각 칸에 정보들을 채워 넣고 <code>다음</code> 버튼을 누른다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/831b2cbe-a122-4d8c-84c7-fd740ace5941/image.png" alt="virtualbox-addnew-03"></p>
<ul>
<li><p>Username에는 사용자의 이름을 입력한다.
(알파벳으로 작성하되 소문자로 시작해야 한다.)</p>
</li>
<li><p>Password와 Repeat Password에는 비밀번호를 입력한다.</p>
</li>
<li><p><code>Guest Additions</code> 체크박스에 체크한다.</p>
</li>
</ul>
</li>
<li><p>가상머신에 할당 할 메모리와 CPU를 초록색 범위 안에서 설정하고 <code>다음</code> 버튼을 누른다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/87856c29-38e4-4b46-b042-6dc9fae93374/image.png" alt="virtualbox-addnew-04"></p>
</li>
<li><p>가상머신에 할당 할 저장공간의 크기를 필요한 만큼 설정하고 <code>다음</code> 버튼을 누른다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/7568c8f7-8046-4358-b701-e24e1b772e33/image.png" alt="virtualbox-addnew-05"></p>
</li>
<li><p>설정에 이상이 없는지 확인한 후 <code>Finish</code> 버튼을 누른다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/1c5d61df-c4f1-48ee-86e7-76696e1ea90d/image.png" alt="virtualbox-addnew-06"></p>
</li>
</ol>
<hr>
<h2 id="ubuntu-설치하기">Ubuntu 설치하기</h2>
<ol>
<li><p>온라인 계정 연결 설정 화면이 나오면 <code>Skip</code> 버튼을 누른다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/4e933985-42aa-4c2b-add5-723fd6a3f2cc/image.png" alt="ubuntu-install-01"></p>
</li>
<li><p>Livepatch 설정 화면이 나오면 <code>Next</code> 버튼을 누른다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/65d05188-b4a9-4c32-8bfa-36274d51d4cf/image.png" alt="ubuntu-install-02"></p>
</li>
<li><p>사용자 정보 전송 설정 화면이 나오면 <code>No, don&#39;t send system info</code> 라디오 버튼을 클릭한 후, <code>Next</code> 버튼을 누른다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/c135cd3c-a8b5-4bbb-9ea2-ebc15212f506/image.png" alt="ubuntu-install-03"></p>
</li>
<li><p>위치정보 설정 화면에서 <code>Location Services</code>가 비활성화 되어 있는 것을 확인한 후 <code>Next</code> 버튼을 누른다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/c2d382a5-82f6-4ee0-8f29-bfaf80667855/image.png" alt="ubuntu-install-04"></p>
</li>
<li><p>설정 완료 화면이 나오면 <code>Done</code> 버튼을 누른다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/cee04e33-c9f6-42a8-99ad-3fd88109d50e/image.png" alt="ubuntu-install-05"></p>
</li>
<li><p>설치를 완료하면 Ubuntu desktop 화면을 확인할 수 있다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/88885373-d7dd-4f07-a079-8fa07ce783f3/image.png" alt="ubuntu-install-06"></p>
</li>
</ol>
<hr>
<h1 id="terminal-안열리는-문제">Terminal 안열리는 문제</h1>
<h2 id="증상">증상</h2>
<ul>
<li><p>terminal을 실행하면 상단 표시줄에서 실행을 준비하다가 종료된다.</p>
</li>
<li><p>오류 메시지: 없음</p>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/jaehyung-eun/post/d94a552d-2369-4851-81c1-d5d295bee888/image.png" alt="ubuntu-terminal-open-error-01"></p>
<h2 id="문제의-원인">문제의 원인</h2>
<ul>
<li><p>VirtualBox에서 자동으로 Ubuntu를 설치하는 과정에서 locale 설정이 잘못 되었기 때문이라 판단된다.</p>
</li>
<li><p>stack exchange에서 동일한 문제를 겪은 사람의 질문을 찾을 수 있었다.</p>
<p>  <a href="https://askubuntu.com/questions/1435918/terminal-not-opening-on-ubuntu-22-04-on-virtual-box-7-0-0">https://askubuntu.com/questions/1435918/terminal-not-opening-on-ubuntu-22-04-on-virtual-box-7-0-0</a></p>
</li>
</ul>
<h2 id="해결-방법">해결 방법</h2>
<p>가장 간단한 방법은 설치하는 과정에서 <code>Skip Unattended Installation</code>에 체크 하고 수동으로 설치하는 것이다. 하지만 이미 설치한 상태라면 다음과 같이 locale을 수정해서 해결할 수 있다.</p>
<ol>
<li><p>TTY(TeleTYpewriter)로 전환 후 locale 파일을 연다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/ec6f222a-b39a-4b7c-a5d2-7065a90b090a/image.png" alt="ubuntu-terminal-open-error-02"></p>
<ul>
<li><p><code>ctrl</code> + <code>alt</code> + <code>f3</code> 키를 동시에 눌러 TTY로 전환한다.</p>
</li>
<li><p>login 부분에 <code>root</code>를 입력하고, Password에는 <code>설치할 때 입력한 비밀번호</code>를 입력한다.</p>
</li>
<li><p><code>nano /etc/default/locale</code>을 입력하고 실행한다.</p>
</li>
</ul>
</li>
</ol>
<ol start="2">
<li><p>LANG 부분의 en_US 뒤에 <code>.UTF-8</code>을 붙여준다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/14ac3fba-58f1-4bb5-91cf-7be66f9626ec/image.png" alt="ubuntu-terminal-open-error-03"></p>
<ul>
<li><p>2열로 커서를 옮겨 <code>en_US</code>를 <code>en_US.UTF-8</code>로 변경한다.</p>
</li>
<li><p><code>ctrl</code> + <code>o</code> 키를 동시에 누르면 저장할 파일명을 입력하는 상태가 된다.</p>
</li>
<li><p><code>enter</code> 키를 누른다.</p>
</li>
<li><p><code>ctrl</code> + <code>x</code> 키를 동시에 누르면 에디터가 종료된다.</p>
</li>
</ul>
</li>
<li><p>설정한 locale을 업데이트 한다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/6570b5aa-5420-4713-939f-76dc871ef126/image.png" alt="ubuntu-terminal-open-error-04"></p>
<ul>
<li><code>locale-gen --purge</code>를 입력하고 실행한다.</li>
</ul>
</li>
<li><p>설정이 완료되었다면 재시작 한다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/14e1dcb0-9681-42cf-95cf-8dca3eac4ec5/image.png" alt="ubuntu-terminal-open-error-05"></p>
<ul>
<li><code>reboot</code>을 입력하고 실행한다.</li>
</ul>
</li>
</ol>
<ol start="5">
<li><p>재시작 후에 터미널을 실행하면 정상적으로 동작하는 것을 확인할 수 있다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/ec099805-c863-4a14-81d4-9968a2709c6b/image.png" alt="ubuntu-terminal-open-error-06"></p>
</li>
</ol>
<hr>
<h1 id="sudo-명령을-사용할-수-없는-문제">sudo 명령을 사용할 수 없는 문제</h1>
<h2 id="증상-1">증상</h2>
<ul>
<li><p>sudo를 입력 후 super user의 권한이 필요한 명령을 입력했을 때 실행되지 않고 오류를 출력한다.</p>
</li>
<li><p>오류 메시지: (username) is not in the sudoers file.  This incident will be reported.</p>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/jaehyung-eun/post/8eac95b4-f495-446e-ae40-16ffc6196bed/image.png" alt="ubuntu-sudoer-error-01"></p>
<h2 id="문제의-원인-1">문제의 원인</h2>
<ul>
<li><p>오류 내용은 사용자가 sudoers 파일에 존재하지 않는다는 것이다.</p>
</li>
<li><p>따라서 sudoers 파일에 현재 사용자를 추가해주면 해결할 수 있다.</p>
</li>
</ul>
<h2 id="해결-방법-1">해결 방법</h2>
<ol>
<li><p>super user인 상태에서 <code>/etc/sudoers</code> 파일을 연다.</p>
<ul>
<li><p>일단 현재 하던 일을 멈추기 위해 <code>ctrl</code> + <code>c</code> 키를 누른다.</p>
</li>
<li><p><code>su</code>를 입력한 후 실행하고, 비밀번호를 입력한 후 <code>enter</code> 키를 누른다.</p>
</li>
<li><p>super user인 상태에서 <code>nano /etc/sudoers</code>를 입력한 후 실행한다.</p>
<p><img src="https://velog.velcdn.com/images/jaehyung-eun/post/2371c9aa-4ab8-4340-8a56-cf027f0ce3ec/image.png" alt="ubuntu-sudoer-error-02"></p>
</li>
</ul>
</li>
<li><p>현재 사용자를 sudoers에 추가한다.</p>
<ul>
<li><p>커서를 내리다보면 <code>User privilege specification</code>이라는 항목이 나온다.</p>
</li>
<li><p>이 항목 아래에 <code>사용자이름 ALL=(ALL:ALL) ALL</code>을 입력한다.</p>
</li>
<li><p>만일 사용자 이름이 <code>test-user</code>라면 <code>test-user ALL=(ALL:ALL) ALL</code>를 입력한다.</p>
<p><img src="https://velog.velcdn.com/images/jaehyung-eun/post/ecd89639-aae1-4550-abbe-2e6e584844f1/image.png" alt="ubuntu-sudoer-error-03"></p>
</li>
</ul>
</li>
<li><p>저장 후 에디터를 종료한다.</p>
<ul>
<li><p>입력을 마친 후 <code>ctrl</code> + <code>o</code> 키를 동시에 누르면 저장할 파일명을 입력하는 상태가 된다.</p>
</li>
<li><p><code>enter</code> 키를 누른다.</p>
</li>
<li><p><code>ctrl</code> + <code>x</code> 키를 동시에 누르면 에디터가 종료된다.</p>
</li>
</ul>
</li>
<li><p>super user 상태를 종료한다.</p>
<ul>
<li><p>super user에서 다시 일반 사용자가 되려면 <code>exit</code>을 입력한 후 실행한다.</p>
<p><img src="https://velog.velcdn.com/images/jaehyung-eun/post/351c56ad-99d8-4901-8af7-d676b5ea89ad/image.png" alt="ubuntu-sudoer-error-04"></p>
</li>
</ul>
</li>
<li><p>이제 sudo 명령이 정상동작 하는 것을 확인할 수 있다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/3f95dcc5-4c8c-4684-be8e-038a12a8aa69/image.png" alt="ubuntu-sudoer-error-05"></p>
</li>
</ol>
<hr>
<h1 id="한글-입력이-안되는-문제">한글 입력이 안되는 문제</h1>
<h2 id="증상-2">증상</h2>
<ul>
<li><p>한글 입력기로 변경하더라도 알파벳만 입력 가능하다.</p>
</li>
<li><p>오류 메시지: 없음</p>
</li>
</ul>
<h2 id="문제의-원인-2">문제의 원인</h2>
<ul>
<li>한글을 입력할 수 있는 문자 패키지가 존재하지 않기 때문이라 판단된다.</li>
</ul>
<h2 id="해결-방법-2">해결 방법</h2>
<ol>
<li><p>오른쪽 상단 메뉴를 선택하고, <code>Settings</code>를 클릭한다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/190dfe6f-fddb-4eb9-9ca9-85cf499f7bf7/image.png" alt="add-input-source-01"></p>
</li>
<li><p>왼쪽 메뉴에서 <code>Region &amp; Language</code>를 선택하고 오른쪽 <code>Manage Installed Languages</code>를 클릭한다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/45f6edf0-4945-433d-a2d3-673f05e06d91/image.png" alt="add-input-source-02"></p>
</li>
<li><p><code>Install / Remove Languages...</code>를 선택한다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/39fadb45-69ed-4fd4-8f38-0455f0c4d3c1/image.png" alt="add-input-source-03"></p>
</li>
<li><p><code>Korean</code> 옆 체크박스를 클릭하고 <code>Apply</code> 버튼을 누른다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/dfaea8e9-167a-43eb-9329-f4a46dba934e/image.png" alt="add-input-source-04"></p>
</li>
</ol>
<ol start="5">
<li><p>관리자 비밀번호를 입력하고 <code>Authenticate</code> 버튼을 누른다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/d4a7817b-a053-4e32-a512-82536acd970d/image.png" alt="add-input-source-05"></p>
</li>
<li><p>이제 왼쪽 메뉴에서 <code>Keyboard</code>를 누르고 오른쪽 <code>Input Sources</code>의 <code>+</code> 버튼을 누른다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/981c405c-42d8-458f-9f99-29bb95ea7662/image.png" alt="add-input-source-06"></p>
</li>
<li><p><code>Korean</code>을 선택한다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/a77969b9-a71f-4875-8f26-08e57a4adbea/image.png" alt="add-input-source-07"></p>
</li>
<li><p><code>Korean (Hangul)</code>을 선택하고, <code>Add</code> 버튼을 누른다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/010fab8f-3a89-4150-a696-e8fa7275a29d/image.png" alt="add-input-source-08"></p>
</li>
</ol>
<ol start="9">
<li><p><code>Input Sources</code>의 <code>English (US)</code> 오른쪽에 있는 점 3개를 클릭하고 <code>Remove</code>를 선택한다.</p>
<p> <img src="https://velog.velcdn.com/images/jaehyung-eun/post/89e96028-2622-415a-8898-959c0fe91546/image.png" alt="add-input-source-09"></p>
</li>
</ol>
<ol start="10">
<li>터미널을 열고 아래 명령을 입력한 후, 실행한다.</li>
</ol>
<pre><code class="language-shell">sudo nano /usr/share/X11/xkb/symbols/altwin</code></pre>
<ol start="11">
<li><p>6번 라인의 <code>Alt_R, Meta_R</code>을 <code>Hangul</code>로 변경한다.</p>
<p><img src="https://velog.velcdn.com/images/jaehyung-eun/post/ffa3ffbf-a5f9-4ea6-b07b-017f85f87c21/image.png" alt="add-input-source-10"></p>
</li>
</ol>
<ol start="12">
<li><p>저장 후 에디터를 종료한다.</p>
<ul>
<li><p><code>ctrl</code> + <code>o</code> 키를 동시에 누르면 저장할 파일명을 입력하는 상태가 된다.</p>
</li>
<li><p><code>enter</code> 키를 누른다.</p>
</li>
<li><p><code>ctrl</code> + <code>x</code> 키를 동시에 누르면 에디터가 종료된다.</p>
</li>
</ul>
</li>
<li><p>아래 명령을 입력하여 재시작한다.</p>
</li>
</ol>
<pre><code class="language-shell">sudo reboot</code></pre>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[BOJ 1916: 최소비용 구하기]]></title>
            <link>https://velog.io/@jaehyung-eun/BOJ-1916-%EC%B5%9C%EC%86%8C%EB%B9%84%EC%9A%A9-%EA%B5%AC%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@jaehyung-eun/BOJ-1916-%EC%B5%9C%EC%86%8C%EB%B9%84%EC%9A%A9-%EA%B5%AC%ED%95%98%EA%B8%B0</guid>
            <pubDate>Thu, 08 Dec 2022 18:13:37 GMT</pubDate>
            <description><![CDATA[<h1 id="문제">문제</h1>
<ol>
<li>첫 번째 줄에 도시의 수 N이 주어짐 (1 ≤ N ≤ 1,000)</li>
<li>두 번째 줄에 두 도시를 오가는 버스의 수 M이 주어짐 (1 ≤ M ≤ 100,000)</li>
<li>세 번째 줄부터 M줄 만큼 도시간 이동비용이 주어짐</li>
<li>마지막 줄에 출발할 도시와 도착하려는 도시가 주어짐</li>
<li>출발 도시에서 도착 도시까지 이동 시 최소 비용을 계산하여 반환</li>
</ol>
<hr>
<h1 id="접근방법-및-주의사항">접근방법 및 주의사항</h1>
<h2 id="정석대로-접근하기">정석대로 접근하기</h2>
<ol>
<li>도시의 수를 바탕으로 2차원 배열을 생성하여 이것을 graph로 사용함</li>
<li>버스의 수만큼 반복문을 돌며 graph를 채움</li>
<li>dijkstra algorithm을 이용하여 최소 비용을 계산함</li>
</ol>
<h2 id="주의사항">주의사항</h2>
<ol>
<li>도시의 index가 1부터 시작함<ul>
<li>배열에 넣을 때 index에 신경을 써야 함</li>
</ul>
</li>
<li>두 도시 사이에 비용이 여럿 존재할 수 있음 (multi graph)<ul>
<li>입력으로 받은 비용 중 최소 비용으로 설정</li>
</ul>
</li>
<li>dijkstra algorithm의 최대 값을 넉넉히 설정해야 함<ul>
<li>N과 M이 최대 값으로 사용되는 경우를 고려해야 함</li>
<li><code>limit.h</code>의 <code>INT_MAX</code>로 처리할 수 있음 </li>
</ul>
</li>
</ol>
<hr>
<h1 id="문제-풀이">문제 풀이</h1>
<h2 id="graph-생성">graph 생성</h2>
<ol>
<li>2차원 배열로 graph를 생성함</li>
<li>입력받은 도시의 번호에서 1을 뺀 값을 index로 사용함</li>
<li>마찬가지로 출발 도시와 시작 도시의 index도 입력받은 값에서 1을 빼야 함</li>
<li>graph를 생성하는 과정에서 이미 비용이 설정되어 있다면 기존값과 비교하여 최소값을 저장함</li>
</ol>
<h2 id="dijkstra-algorithm">dijkstra algorithm</h2>
<ol>
<li>각 도시에 대한 방문 비용 정보를 초기화 함<ul>
<li>모든 도시에 방문하는 비용을 무한대(<code>INT_MAX</code>)로 설정함</li>
<li>모든 도시를 방문하지 않은 상태로 설정함</li>
<li>시작 도시의 방문 비용만 0으로 설정함</li>
</ul>
</li>
<li>방문하지 않는 도시 중 방문 비용이 가장 낮은 도시(<code>u</code>)를 찾고, 방문한 것으로 설정함</li>
<li>모든 방문하지 않은 도시(<code>v</code>)에 대하여, 아래 두 값 중 작은 값을 자신의 방문 비용으로 설정함<ul>
<li>시작 도시에서 <code>v</code>로 바로 가는 비용</li>
<li>시작 도시에서 <code>u</code>를 거쳐 <code>v</code>로 가는 비용</li>
</ul>
</li>
<li>목적지에 방문하는 비용을 반환함</li>
</ol>
<pre><code>function dijkstra(N, src, dest, graph):
    for each vertex v in graph.vertices:
        dist[v] ← INFINITY
        set v to an unvisited vertex
    dist[source] ← 0

    while the unvisited vertices exist:
        u is an unvisited vertex with min dist[u]
        set u to a visited vertex

    for each unvisited neighbor v of u:
        alt ← dist[u] + graph.edge(u, v)
        if alt &lt; dist[v]:
            dist[v] ← alt

    return dist[dest]</code></pre><h2 id="방문-비용이-최소인-도시-찾기">방문 비용이 최소인 도시 찾기</h2>
<ul>
<li>정렬 알고리즘을 이용하여 빠르게 최소 값을 얻을 수 있다.</li>
<li>하지만 도시의 수가 1000개 이하이므로 단순히 반복문을 이용하여 찾아도 무방하다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[BOJ 1068: 트리]]></title>
            <link>https://velog.io/@jaehyung-eun/1068%EB%B2%88-%ED%8A%B8%EB%A6%AC</link>
            <guid>https://velog.io/@jaehyung-eun/1068%EB%B2%88-%ED%8A%B8%EB%A6%AC</guid>
            <pubDate>Thu, 08 Dec 2022 14:06:26 GMT</pubDate>
            <description><![CDATA[<h1 id="문제">문제</h1>
<ol>
<li>첫 번째 줄에 전체 node 수 N이 주어짐 (N&lt;=50)</li>
<li>두 번째 줄에 각 node의 parent node index가 주어짐</li>
<li>세 번째 줄에 제거할 node의 index가 주어짐</li>
<li>leaf node의 수를 계산해서 반환</li>
</ol>
<hr>
<h1 id="접근방법-및-주의사항">접근방법 및 주의사항</h1>
<h2 id="정석대로-접근하기">정석대로 접근하기</h2>
<ol>
<li>전체 node 수를 받아 배열 생성</li>
<li>반복하며 배열에 값을 입력받음</li>
<li>입력받은 값을 바탕으로 tree 생성</li>
<li>tree에서 입력받은 node 제거</li>
<li>depth first search 방식으로 leaf node 수 계산</li>
</ol>
<h2 id="주의사항">주의사항</h2>
<ol>
<li>root를 제거한 경우 0을 반환해야 함</li>
<li>문제에 없는 내용을 속단하지 말 것<ul>
<li>binary tree라는 보장이 없음</li>
<li>입력이 순서대로 들어온다는 보장이 없음 </li>
</ul>
</li>
</ol>
<hr>
<h1 id="문제-풀이">문제 풀이</h1>
<h2 id="tree-node-생성하기">tree node 생성하기</h2>
<ol>
<li>binary tree라는 보장이 없으므로 child node의 수를 알 수 없음<ul>
<li>child node를 linked list 형태로 관리하여 해결</li>
<li>head, next, tail을 다룰 포인터를 만듬</li>
</ul>
</li>
<li>child node counter를 이용해 leaf node 여부 판별</li>
</ol>
<h2 id="tree-생성하기">tree 생성하기</h2>
<ol>
<li>반복문을 돌며 현재 node를 기준으로 parent node를 설정함<ul>
<li>root node인 경우 parent node index가 -1이므로 넘어감</li>
</ul>
</li>
<li>parent node의 child node 목록에 자신을 등록함<ul>
<li>첫 번째 child node인 경우 child_head에 등록함</li>
<li>첫 번째 child node가 아닌 경우 child_tail의 다음 node로 등록함</li>
</ul>
</li>
<li>자신을 parent node의 가장 마지막 node로 설정함</li>
<li>parent node의 child node 수를 증가시킴</li>
</ol>
<h2 id="depth-first-search">depth first search</h2>
<ol>
<li>child node가 없는 경우 leaf node이므로 1을 반환함</li>
<li>child node가 있는 경우 child node list의 각 node에 대하여 <code>dfs()</code> function을 적용하고 그 결과를 누적해서 반환함</li>
</ol>
<h2 id="노드-제거">노드 제거</h2>
<ol>
<li>root node를 제거하려는 경우 leaf node 수를 0으로 반환함</li>
<li>parent node의 child node list에서 지정한 node만 제거함</li>
<li>제거 후 <code>dfs()</code> function을 이용하여 leaf node의 수를 계산하여 반환함</li>
</ol>
]]></description>
        </item>
    </channel>
</rss>