<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>jaewon_.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Thu, 21 Oct 2021 12:11:09 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. jaewon_.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/jaewon_" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[TIL] 211021]]></title>
            <link>https://velog.io/@jaewon_/TIL-211021</link>
            <guid>https://velog.io/@jaewon_/TIL-211021</guid>
            <pubDate>Thu, 21 Oct 2021 12:11:09 GMT</pubDate>
            <description><![CDATA[<h2 id="1-백준">1. 백준</h2>
<ul>
<li><a href="https://www.acmicpc.net/problem/2667">2667번</a><pre><code>#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;
#include &lt;algorithm&gt;
using namespace std;
</code></pre></li>
</ul>
<p>#define MAX 26
string map[MAX];
int n;
int cnt = 0;
int dx[4] = { -1, 1, 0, 0 };
int dy[4] = { 0, 0,-1,1 };
vector<int> v;</p>
<p>void dfs(int x, int y) {
    map[x][y] = &#39;0&#39;;
    cnt++;
    for (int i = 0; i &lt; 4; i++) {
        int nx = x + dx[i];
        int ny = y + dy[i];
        if (nx &gt;= 0 &amp;&amp; nx &lt; n &amp;&amp; ny &gt;= 0 &amp;&amp; ny &lt; n) {
            if (map[nx][ny] == &#39;1&#39;) {
                dfs(nx, ny);
            }
        }
    }
}</p>
<p>int main() {
    cin &gt;&gt; n;
    for (int i = 0; i &lt; n; i++) {
        cin &gt;&gt; map[i];
    }</p>
<pre><code>for (int i = 0; i &lt; n; i++) {
    for (int j = 0; j &lt; n; j++) {
        if (map[i][j] == &#39;1&#39;) {
            dfs(i, j);
            v.push_back(cnt);
            cnt = 0;
        }
    }
}
cout &lt;&lt; v.size() &lt;&lt; &quot;\n&quot;;
sort(v.begin(), v.end());
for (int i = 0; i &lt; v.size(); i++) {
    cout &lt;&lt; v[i] &lt;&lt; &quot;\n&quot;;
}</code></pre><p>}</p>
<pre><code>&gt; 💡 string으로 받아오므로 문자와 비교하기

- [1012번](https://www.acmicpc.net/problem/1012)</code></pre><p>#include <iostream>
#include &lt;string.h&gt;
using namespace std;</p>
<p>#define MAX 51</p>
<p>int map[MAX][MAX] = { 0, };
bool visited[MAX][MAX] = { false, };
int T, M, N, K;
//int n;
int cnt = 0;
int dx[4] = { -1, 1, 0, 0 };
int dy[4] = { 0, 0,-1,1 };</p>
<p>void dfs(int x, int y) {
    visited[x][y] = true;
    //cnt++;
    for (int i = 0; i &lt; 4; i++) {
        int nx = x + dx[i];
        int ny = y + dy[i];
        if (nx &gt;= 0 &amp;&amp; nx &lt; N &amp;&amp; ny &gt;= 0 &amp;&amp; ny &lt; M) {
            if (map[nx][ny] == 1 &amp;&amp; !visited[nx][ny]) {
                dfs(nx, ny);
            }
        }
    }
}</p>
<p>int main() {
    cin &gt;&gt; T;
    while (T &gt; 0) {
        cnt = 0;
        cin &gt;&gt; M &gt;&gt; N &gt;&gt; K;
        for (int i = 0; i &lt; K; i++) {
            int a, b;
            cin &gt;&gt; a &gt;&gt; b;
            map[b][a] = 1;
        }
        for (int i = 0; i &lt; N; i++) {
            for (int j = 0; j &lt; M; j++) {
                if (map[i][j] == 1 &amp;&amp; !visited[i][j]) {
                    dfs(i, j);
                    cnt++;</p>
<pre><code>            }
        }
    }
    cout &lt;&lt; cnt &lt;&lt; &quot;\n&quot;;
    T--;
    memset(visited, false, sizeof(visited));
    memset(map, 0, sizeof(map));
}</code></pre><p>}</p>
<pre><code>
&gt; 💡 memset
배열 초기화를 위해 씀, memset(배열이름, 초기화할 값, 사이즈)</code></pre><p>#include &lt;string.h&gt;</p>
<pre><code>를 써주어야 한다.




</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[TIL] 211019]]></title>
            <link>https://velog.io/@jaewon_/TIL-211019</link>
            <guid>https://velog.io/@jaewon_/TIL-211019</guid>
            <pubDate>Tue, 19 Oct 2021 14:42:48 GMT</pubDate>
            <description><![CDATA[<h2 id="1-백준-c">1. 백준 (C++)</h2>
<ul>
<li><a href="https://www.acmicpc.net/problem/1712">1712번</a><pre><code>#include &lt;iostream&gt;
using namespace std;

</code></pre></li>
</ul>
<p>int main() {
    int a, b, c;
    cin &gt;&gt; a &gt;&gt; b &gt;&gt; c;
    if (b &lt; c) {
        cout &lt;&lt; a / (c - b) + 1;
    }
    else {
        cout &lt;&lt; &quot;-1&quot;;
    }</p>
<p>}</p>
<pre><code>- [10872번](https://www.acmicpc.net/problem/10872)</code></pre><p>#include <iostream>
using namespace std;
int fac(int n) {
    if (n &lt;= 1) {
        return 1;
    }
    else {
        return n * fac(n - 1);
    }
}</p>
<p>int main() {
    int m;
    cin &gt;&gt; m;
    cout &lt;&lt; fac(m);
}</p>
<pre><code>
- [10870번](https://www.acmicpc.net/problem/10870)</code></pre><p>#include <iostream>
using namespace std;
int fibo(int n) {
    if (n == 0) {
        return 0;
    }
    else if (n == 1) {
        return 1;
    }
    else {
        return fibo(n - 1) + fibo(n - 2);
    }
}</p>
<p>int main() {
    int m;
    cin &gt;&gt; m;
    cout &lt;&lt; fibo(m);
}</p>
<pre><code>- [11047번](https://www.acmicpc.net/problem/11047)</code></pre><p>#include <iostream>
#include <vector>
using namespace std;
int coin[10];
int main() {
    int N, K;
    cin &gt;&gt; N &gt;&gt; K;
    int ans = 0;
    //vector<int> coin(N);
    for (int i = 0; i &lt; N; i++) {
        cin &gt;&gt; coin[i];
    }
    for (int i = N - 1; K &gt; 0;) {
        if (coin[i] &gt; K) {
            i--;
        }
        else {
            K -= coin[i];
            ans++;
        }
    }
    cout &lt;&lt; ans;
}</p>
<pre><code>
- [1931번](https://www.acmicpc.net/problem/1931)</code></pre><p>#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;</p>
<p>int main() {
    int N, start, end;
    cin &gt;&gt; N;
    vector&lt;pair&lt;int, int&gt;&gt; meeting;
    for (int i = 0; i &lt; N; i++) {
        cin &gt;&gt; start &gt;&gt; end;
        meeting.push_back(make_pair(end, start));
    }
    sort(meeting.begin(), meeting.end());</p>
<pre><code>int time = meeting[0].first;
//cout &lt;&lt; time;
int cnt = 1;
for (int i = 1; i &lt; N; i++) {
    if (time &lt;= meeting[i].second) {
        cnt++;
        time = meeting[i].first;
    }
}
cout &lt;&lt; cnt;</code></pre><p>}</p>
<pre><code>- [11399번](https://www.acmicpc.net/problem/11399)</code></pre><p>#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;</p>
<p>int main() {
    int N, k,ans=0;
    cin &gt;&gt; N;
    vector<int> line;</p>
<pre><code>for (int i = 0; i &lt; N; i++) {
    cin &gt;&gt; k;
    line.push_back(k);
}
sort(line.begin(), line.end());

for (int i = 0; i &lt; N; i++) {
    ans += line[i] * (N - i);
}
cout &lt;&lt; ans;</code></pre><p>}</p>
<pre><code>- [1541번](https://www.acmicpc.net/problem/1541)</code></pre><p>#include <iostream>
#include <string>
using namespace std;</p>
<p>int main() {
    string str, tmp =&quot;&quot;;
    int ans = 0;
    bool minus = false;
    cin &gt;&gt; str;
    for (int i = 0; i &lt; str.size()+1; i++) {
        //cout &lt;&lt; &quot;str : &quot; &lt;&lt; str[i] &lt;&lt; &quot;\n&quot;;
        if (str[i] == &#39;+&#39; || str[i] == &#39;-&#39; || str[i] == &#39;\0&#39;) {
            if (minus) {
                ans -= stoi(tmp);
            }
            else {
                ans += stoi(tmp);
            }
            if (str[i] == &#39;-&#39;) {
                minus = true;
            }
            tmp = &quot;&quot;;
            //cout &lt;&lt; &quot;ans : &quot; &lt;&lt; ans &lt;&lt; &quot;\n&quot;;
        }
        else {
            tmp += str[i];</p>
<pre><code>    }
}
cout &lt;&lt; ans;</code></pre><p>}</p>
<pre><code>- [13305번](https://www.acmicpc.net/problem/13305)
</code></pre><p>#include <iostream>
using namespace std;</p>
<p>long long city[100001];
long long price[100001];</p>
<p>int main() {
    int N;
    long long ans =0;
    cin &gt;&gt; N;</p>
<pre><code>for (int i = 0; i &lt; N-1; i++) {
    cin &gt;&gt; city[i];
    //cout &lt;&lt; city[i];
}
for (int i = 0; i &lt; N; i++) {
    cin &gt;&gt; price[i];
}
int m = price[0];
for (int i = 0; i &lt; N - 1; i++) {
    if (price[i] &lt; m) {
        m = price[i];
    }
    ans += (long long)m * city[i];
}
cout &lt;&lt; ans;</code></pre><p>}</p>
<pre><code>&gt; 💡 int로 하면 범위 초과하기 때문에 long long으로 쓸 것 

- [1260번](https://www.acmicpc.net/problem/1260)</code></pre><p>#include <iostream>
#include <queue>
using namespace std;
#define MAX 1001</p>
<p>int n, m, v;
int map[MAX][MAX];
bool visited[MAX];
queue<int> q;</p>
<p>void reset() {
    for (int i = 0; i &lt;= n; i++) {
        visited[i] = false;
    }
}</p>
<p>void DFS(int v) {
    visited[v] = true;
    cout &lt;&lt; v &lt;&lt; &quot; &quot;;</p>
<pre><code>for (int i = 0; i &lt;= n; i++) {
    if (map[v][i] == 1 &amp;&amp; visited[i] == false) {
        DFS(i);
    }
}</code></pre><p>}</p>
<p>void BFS(int v) {
    q.push(v);
    visited[v] = true;</p>
<pre><code>while (!q.empty()) {
    v = q.front();
    q.pop();
    cout &lt;&lt; v &lt;&lt; &quot; &quot;;
    for (int i = 1; i &lt;= n; i++) {
        if (map[v][i] == 1 &amp;&amp; visited[i] == false) {
            q.push(i);
            visited[i] = true;
            //cout &lt;&lt; i &lt;&lt; &quot; &quot;;
        }
    }
}</code></pre><p>}</p>
<p>int main() {
    cin &gt;&gt; n &gt;&gt; m &gt;&gt; v;
    for (int i = 0; i &lt; m; i++) {
        int a, b;
        cin &gt;&gt; a &gt;&gt; b;
        map[a][b] = 1;
        map[b][a] = 1;
    }</p>
<pre><code>reset();
DFS(v);

cout &lt;&lt; &quot;\n&quot;;

reset();
BFS(v);</code></pre><p>}</p>
<pre><code>
- [2606번](https://www.acmicpc.net/problem/2606)
1. bfs</code></pre><p>#include <iostream>
#include <queue>
#define MAX 101
using namespace std;
int n, m;
int map[MAX][MAX] = { 0, };
bool visited[MAX] = { 0, };
queue<int> q;
int cnt = 0;</p>
<p>void bfs(int v) {
    q.push(v);
    visited[v] = true;
    while (!q.empty()) {
        v = q.front();
        q.pop();
        //cout &lt;&lt; v &lt;&lt; &quot; &quot;;
        for (int i = 1; i &lt;= n; i++) {
            if (map[v][i] == 1 &amp;&amp; visited[i] == false) {
                q.push(i);
                visited[i] = true;
                cnt++;
            }
        }
    }
    cout &lt;&lt; cnt;
}</p>
<p>int main() {
    //cout &lt;&lt; visited[2];
    cin &gt;&gt; n &gt;&gt; m;
    for (int i = 0; i &lt; m; i++) {
        int a, b;
        cin &gt;&gt; a &gt;&gt; b;
        map[a][b] = 1;
        map[b][a] = 1;
    }
    bfs(1);
}</p>
<pre><code>2. dfs</code></pre><p>#include <iostream>
#define MAX 101
using namespace std;
int n, m;
int map[MAX][MAX] = { 0, };
bool visited[MAX] = { 0, };
int cnt = 0;</p>
<p>void dfs(int v) {
    visited[v] = true;
    cnt++;
    //cout &lt;&lt; v &lt;&lt; &quot; &quot;;
    for (int i = 0; i &lt;= n; i++) {
        if (map[v][i] == 1 &amp;&amp; visited[i] == false) {
            dfs(i);
        }
    }
}
int main() {
    //cout &lt;&lt; visited[2];
    cin &gt;&gt; n &gt;&gt; m;
    for (int i = 0; i &lt; m; i++) {
        int a, b;
        cin &gt;&gt; a &gt;&gt; b;
        map[a][b] = 1;
        map[b][a] = 1;
    }
    dfs(1);
    cout &lt;&lt; cnt-1;
}
```</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[TIL] 211007]]></title>
            <link>https://velog.io/@jaewon_/TIL-211007</link>
            <guid>https://velog.io/@jaewon_/TIL-211007</guid>
            <pubDate>Thu, 07 Oct 2021 10:43:20 GMT</pubDate>
            <description><![CDATA[<h2 id="1-c-기초-연습">1. C++ 기초 연습</h2>
<ul>
<li><a href="https://www.acmicpc.net/problem/2739">2739번</a><pre><code>#include &lt;iostream&gt;
using namespace std;
</code></pre></li>
</ul>
<p>int main() {
    int N;
    cin &gt;&gt; N;
    for (int i = 1; i &lt; 10; i++){
        cout &lt;&lt; N &lt;&lt; &quot; * &quot; &lt;&lt; i &lt;&lt; &quot; = &quot; &lt;&lt; N*i &lt;&lt; &quot;\n&quot;;
    }
}</p>
<pre><code>&gt; 💡 &quot;\n&quot;; 까먹지 말기!!

- [10950번](https://www.acmicpc.net/problem/10950)</code></pre><p>#include <iostream>
using namespace std;</p>
<p>int main() {
    int T;
    cin &gt;&gt; T;
    int A, B;
    for (int i = 0; i &lt; T; i++){
        cin &gt;&gt; A &gt;&gt; B;
        cout &lt;&lt; A + B &lt;&lt; &quot;\n&quot;;
    }
}</p>
<pre><code>- [8393번](https://www.acmicpc.net/problem/8393)</code></pre><p>#include <iostream>
using namespace std;</p>
<p>int main() {
    int N;
    cin &gt;&gt; N;
    int sum = 0;
    for (int i = 0; i &lt; N+1; i++){
        sum += i;
    }
    cout &lt;&lt; sum &lt;&lt; &quot;\n&quot;;
}</p>
<pre><code>
- [15552번](https://www.acmicpc.net/problem/15552)</code></pre><p>코드를 입력하세요</p>
<pre><code>
- [2741번](https://www.acmicpc.net/problem/2741)</code></pre><p>#include <iostream>
using namespace std;</p>
<p>int main() {
    int N;
    cin &gt;&gt; N;
    for (int i = 1; i &lt; N+1; i++){
        cout &lt;&lt; i &lt;&lt; &quot;\n&quot;;
    }</p>
<p>}</p>
<pre><code>
- [11021번](https://www.acmicpc.net/problem/11021)</code></pre><p>#include <iostream>
using namespace std;</p>
<p>int main() {
    int T;
    cin &gt;&gt; T;
    int A, B;
    for (int i = 1; i &lt; T + 1; i++){
        cin &gt;&gt; A &gt;&gt; B;
        cout &lt;&lt; &quot;Case #&quot; &lt;&lt; i &lt;&lt; &quot;: &quot; &lt;&lt; A+B &lt;&lt; &quot;\n&quot;;
    }</p>
<p>}</p>
<pre><code>- [10951번](https://www.acmicpc.net/problem/10951)</code></pre><p>#include <iostream>
using namespace std;</p>
<p>int main() {
    int A , B;
    while (cin &gt;&gt; A &gt;&gt; B){
        cout &lt;&lt; A+B &lt;&lt; &quot;\n&quot;;
    }</p>
<p>}</p>
<pre><code>

</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[TIL] 211006]]></title>
            <link>https://velog.io/@jaewon_/TIL-20211006</link>
            <guid>https://velog.io/@jaewon_/TIL-20211006</guid>
            <pubDate>Wed, 06 Oct 2021 07:58:37 GMT</pubDate>
            <description><![CDATA[<h2 id="1-c-기초-연습">1. C++ 기초 연습</h2>
<p><a href="https://www.acmicpc.net/step">백준 단계별 학습</a> - 입출력과 사칙연산, if문 문제를 통해 C++을 처음부터 다시 복습하였다. </p>
<ul>
<li><p><a href="https://www.acmicpc.net/problem/2557">2757번</a></p>
<pre><code>#include &lt;iostream&gt;
using namespace std;
int main(){
  cout&lt;&lt;&quot;Hello World!&quot;&lt;&lt; &quot;\n&quot;;
  return 0;
}</code></pre><blockquote>
<p>📌 &quot;\n&quot;
endl를 써도 되지만 빠른 입출력을 요구하는 경우 endl 지양</p>
</blockquote>
</li>
<li><blockquote>
<p>&quot;\n&quot;역할 + 내부 버퍼 비우기</p>
</blockquote>
</li>
<li><p><a href="https://www.acmicpc.net/problem/10718">10718번</a></p>
<pre><code>#include &lt;iostream&gt;
using namespace std;
</code></pre></li>
</ul>
<p>int main(){
    cout &lt;&lt; &quot;강한친구 대한육군&quot;&lt;&lt; &quot;\n&quot;;
    cout &lt;&lt; &quot;강한친구 대한육군&quot;;
}</p>
<pre><code>
- [1008번](https://www.acmicpc.net/problem/1008)</code></pre><p>#include <iostream>
using namespace std;</p>
<p>int main(){
    double A,B;
    cin &gt;&gt; A &gt;&gt; B;
    cout.precision(12);
    cout &lt;&lt; fixed;
    cout &lt;&lt; A/B;
}</p>
<pre><code>&gt; 📌 cout.precision(n)
소수점 자릿수 조절</code></pre><p>cout.precision(n)</p>
<pre><code>-&gt; n자리 나타내준다.
ex) n = 7 , 123.456689 -&gt; 123.4567 , 89는 반올림 된다.</code></pre><p>cout &lt;&lt; fixed;
cout.precision(n)</p>
<pre><code>-&gt; 소수점 이하의 자릿수만 다룰 수 있다. 소수점 이하의 n개의 수 나타낸다.
ex) n = 7 , 123.45668915 -&gt; 123.4566892 , 5는 반올림 된다.</code></pre><p>cout.unsetf(ios::fixed);</p>
<pre><code>cout &lt;&lt; fixed; 해제 

- [10869번](https://www.acmicpc.net/problem/10869)</code></pre><p>#include <iostream>
using namespace std;</p>
<p>int main(){
    int A,B;
    cin &gt;&gt; A &gt;&gt; B;
    cout &lt;&lt; A+B &lt;&lt; &quot;\n&quot;;
    cout &lt;&lt; A-B &lt;&lt; &quot;\n&quot;;
    cout &lt;&lt; A*B &lt;&lt; &quot;\n&quot;;
    cout &lt;&lt; A/B &lt;&lt; &quot;\n&quot;;
    cout &lt;&lt; A%B;
}</p>
<pre><code>&gt; 이 문제의 경우 int로 출력 나오므로 int로 변수 선언하기

- [10430번](https://www.acmicpc.net/problem/10430)</code></pre><p>#include <iostream>
using namespace std;</p>
<p>int main(){
    int A,B,C;
    cin &gt;&gt; A &gt;&gt; B &gt;&gt; C;
    cout &lt;&lt; (A+B)%C &lt;&lt; &quot;\n&quot;;
    cout &lt;&lt; ((A%C) + (B%C))%C &lt;&lt; &quot;\n&quot;;
    cout &lt;&lt; (A*B)%C &lt;&lt; &quot;\n&quot;;
    cout &lt;&lt; ((A%C) * (B%C))%C ;</p>
<p>}</p>
<pre><code>
- [2588번](https://www.acmicpc.net/problem/2588)
방법1. 수학적 계산</code></pre><p>#include <iostream>
using namespace std;</p>
<p>int main(){
    int A,B;
    cin &gt;&gt; A &gt;&gt; B;
    cout &lt;&lt; A * (B%10) &lt;&lt; &quot;\n&quot;;
    cout &lt;&lt; A * ((B%100)/10) &lt;&lt; &quot;\n&quot;;
    cout &lt;&lt; A * (B/100) &lt;&lt; &quot;\n&quot;;
    cout &lt;&lt; A * B;
}</p>
<pre><code>방법2. string이용</code></pre><p>#include <iostream>
#include <string>
using namespace std;</p>
<p>int main(){
    int A;
    string B;
    cin &gt;&gt; A &gt;&gt; B;
    cout &lt;&lt; A * (B[2] - &#39;0&#39;) &lt;&lt; &quot;\n&quot;;
    cout &lt;&lt; A * (B[1] - &#39;0&#39;) &lt;&lt; &quot;\n&quot;;
    cout &lt;&lt; A * (B[0] - &#39;0&#39;) &lt;&lt; &quot;\n&quot;;
    cout &lt;&lt; A * stoi(B);
}</p>
<pre><code>&gt; char n[] = &quot;123&quot;;
int num = n[0]; ==&gt; num = 49 , 문자 &#39;1&#39;이 저장되어 아스키 코드의 &#39;1&#39;에 해당되는 49가 저장된다. 따라서 인덱스를 참조한 뒤 -&#39;0&#39;을 통해 &#39;0&#39;에 해당되는 48을 빼주어 1로 사용하기 위함이다.

&gt; 📌 stoi()</code></pre><p>#include <string></p>
<pre><code>-&gt; string, stoi()을 사용하기 위한 헤더파일
stoi() 
==&gt; string -&gt; int(10진수)

- [1330번](https://www.acmicpc.net/problem/1330)</code></pre><p>#include <iostream>
using namespace std;</p>
<p>int main() {
    int a, b;
    cin &gt;&gt; a &gt;&gt; b;
    if (a &lt; b) {
        cout &lt;&lt; &quot;&lt;&quot;;
    }
    else if(a == b) {
        cout &lt;&lt; &quot;==&quot;;
    }
    else {
        cout &lt;&lt; &quot;&gt;&quot;;
    }</p>
<p>}</p>
<pre><code>
- [2753번](https://www.acmicpc.net/problem/2753)</code></pre><p>#include <iostream>
using namespace std;</p>
<p>int main() {
    int a;
    cin &gt;&gt; a;
    if ((a % 4 == 0 &amp;&amp; a % 100 != 0)|| a % 400 == 0){
        cout &lt;&lt; &quot;1&quot;;
    }
    else{
        cout &lt;&lt; &quot;0&quot;;
    }</p>
<p>}</p>
<pre><code>
- [2884번](https://www.acmicpc.net/problem/2884)</code></pre><p>#include <iostream>
using namespace std;</p>
<p>int main() {
    int H, M;
    cin &gt;&gt; H &gt;&gt; M;
    if (M &lt; 45){
        M += 15;
        if (--H &lt; 0)
            H = 23;
    }
    else
        M -= 45;
    cout &lt;&lt; H &lt;&lt; &quot; &quot; &lt;&lt; M;
}</p>
<pre><code>
## 2. 알고리즘 연습 (python)
- [14496번](https://www.acmicpc.net/problem/14496)</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Cartographer 설치]]></title>
            <link>https://velog.io/@jaewon_/Cartographer-%EC%84%A4%EC%B9%98</link>
            <guid>https://velog.io/@jaewon_/Cartographer-%EC%84%A4%EC%B9%98</guid>
            <pubDate>Mon, 09 Aug 2021 15:00:59 GMT</pubDate>
            <description><![CDATA[<h2 id="패키지-다운">패키지 다운</h2>
<pre><code>sudo apt-get update
sudo apt-get install -y python-wstool python-rosdep ninja-build stow</code></pre><p><img src="https://images.velog.io/images/jaewon_/post/7cc4b6c2-f205-4dd6-a47e-e21edff2793b/image.png" alt=""></p>
<h2 id="폴더-생성-소스-다운">폴더 생성, 소스 다운</h2>
<pre><code>mkdir carto_ws &amp;&amp; cd carto_ws &amp;&amp; wstool init src</code></pre><p><img src="https://images.velog.io/images/jaewon_/post/5a948c5b-d25a-4106-9e43-3b2d5c5ee416/image.png" alt=""></p>
<pre><code>wstool merge -t src https://raw.githubusercontent.com/cartographer-project/cartographer_Ros/master/cartographer_ros.rosinstall</code></pre><p><img src="https://images.velog.io/images/jaewon_/post/a5742bc4-4c3b-4546-b20a-e0303ab0e299/image.png" alt=""></p>
<pre><code>wstool update -t src
</code></pre><h2 id="dependency-설치">dependency 설치</h2>
<pre><code>rosdep update
rosdep install --from-path src --ignore-src --rosdistro=${ROS_DISTRO} -y</code></pre><p><img src="https://images.velog.io/images/jaewon_/post/5ea024f2-6c5a-4513-a68f-2f4a6ffcb382/image.png" alt=""></p>
<h2 id="abseil-설치">abseil 설치</h2>
<pre><code>src/cartographer/scripts/install_abseil.sh </code></pre><p><img src="https://images.velog.io/images/jaewon_/post/dd388b09-5bfd-4a80-8488-c3bd07d22a65/image.png" alt=""></p>
<h2 id="user환경-적용-설치">user환경 적용, 설치</h2>
<pre><code>sudo su - 
source /home/jw/bashrc 
cd /home/jw/carto_ws/
catkin_make_isolated --install --use-ninja --install-space /opt/ros/melodic</code></pre><p><img src="https://images.velog.io/images/jaewon_/post/ddcf15f1-732d-47fc-ba7d-cbf369f3473f/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[백준 - 16162 가희와 3단 고음]]></title>
            <link>https://velog.io/@jaewon_/%EB%B0%B1%EC%A4%80-16162-%EA%B0%80%ED%9D%AC%EC%99%80-3%EB%8B%A8-%EA%B3%A0%EC%9D%8C</link>
            <guid>https://velog.io/@jaewon_/%EB%B0%B1%EC%A4%80-16162-%EA%B0%80%ED%9D%AC%EC%99%80-3%EB%8B%A8-%EA%B3%A0%EC%9D%8C</guid>
            <pubDate>Tue, 22 Jun 2021 06:20:18 GMT</pubDate>
            <description><![CDATA[<p><a href="https://www.acmicpc.net/problem/16162">백준 16162</a>
<img src="https://images.velog.io/images/jaewon_/post/96531b2f-73f9-4d7d-8a25-ed8d678b1e6e/image.png" alt="">
<img src="https://images.velog.io/images/jaewon_/post/321689c8-3f61-490d-981f-b40195e1518c/image.png" alt=""></p>
<pre><code>import sys
n, a, d = map(int, sys.stdin.readline().split())
t = list(map(int, sys.stdin.readline().split()))
x = 0

for i in range(n):
    if t[i] == a + (x*d):
        x += 1
print(x)</code></pre><p><img src="https://images.velog.io/images/jaewon_/post/ffb638db-3c32-43ff-a4fc-cb77f5a18409/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[백준 - 20300 서강근육맨]]></title>
            <link>https://velog.io/@jaewon_/%EB%B0%B1%EC%A4%80-20300-%EC%84%9C%EA%B0%95%EA%B7%BC%EC%9C%A1%EB%A7%A8</link>
            <guid>https://velog.io/@jaewon_/%EB%B0%B1%EC%A4%80-20300-%EC%84%9C%EA%B0%95%EA%B7%BC%EC%9C%A1%EB%A7%A8</guid>
            <pubDate>Tue, 22 Jun 2021 06:02:08 GMT</pubDate>
            <description><![CDATA[<p><a href="https://www.acmicpc.net/problem/20300">백준 20300</a>
<img src="https://images.velog.io/images/jaewon_/post/c28c5374-3a44-433d-944b-ff30f7043f5d/image.png" alt="">
<img src="https://images.velog.io/images/jaewon_/post/839affd0-d61e-4af1-a94f-5d367d28bf4d/image.png" alt=""></p>
<pre><code>import sys
n = int(sys.stdin.readline())
t = list(map(int, sys.stdin.readline().split()))
t.sort()
#print(t)
if n % 2 == 0:
    M = 0
    for i in range(n//2):
        M = max(t[i]+t[n-i-1], M)
        #print(i)
else:
    M = t[n-1]
    for i in range(n // 2):
        M = max(t[i] + t[n - i - 2], M)
        #print(i)
print(M)</code></pre><p><img src="https://images.velog.io/images/jaewon_/post/4c07c883-3373-4da0-b9c1-425049f2826d/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[머신러닝 기초1 - MNIST_ANN]]></title>
            <link>https://velog.io/@jaewon_/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EA%B8%B0%EC%B4%881-MNISTANN</link>
            <guid>https://velog.io/@jaewon_/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EA%B8%B0%EC%B4%881-MNISTANN</guid>
            <pubDate>Mon, 21 Jun 2021 13:32:04 GMT</pubDate>
            <description><![CDATA[<p>MNIST </p>
<ul>
<li>0~9로 이루어진 손글씨 숫자 데이터</li>
<li>28x28 흑백</li>
<li>60000개 학습 데이터, 10000개 테스트 데이터
=&gt; pytorch 이용해 MNIST 데이터 분류 ANN 네트워크 구현</li>
</ul>
<p>이미지 = batch X 28 X 28 X 1 (흑백이기 때문)
--&gt; 벡터 : batch X 28 * 28 = batch x 784 </p>
<p>인공신경망 연산 -&gt; linear layer, 3</p>
<p>출력 = batch x 10 (0-9 각각에 대한 확률이기 때문)</p>
<h2 id="코드">코드</h2>
<pre><code>import torch
import torch.nn as nn # 딥러닝 네트워크 구현 및 학습을 간단하게 수행할 수 있도록 다양한 함수 제공
import torch.nn.functional as F
import torch.optim as optim
from torchvision import datasets, transforms 
# datasets = 다양한 데이터셋 제[공
# tranforms = 데이터 전처리 등 수행

import numpy as np

# GPU 있는 경우 pytorch 연산을 gpu로, 그렇지 않은 경우 cpu로 수행
device = torch.device(&quot;cuda:0&quot; if torch.cuda.is_available() else &quot;cpu&quot;)

# 파라미터 설정
batch_size = 128 # 한번 학습시 128개의 데이터를 통해 학습
num_epochs = 10 # 모든 데이터에 대해 10번 학습 수행

learning_rate = 0.00025 # 학습률 (학습 속도 결정 -&gt; 너무 작으면 학습 속도가 느립, 값 크면 최적 x)


# MNIST 데이터 다운로드
trn_dataset = datasets.MNIST(&#39;./mnist_data/&#39;, download=True, train=True, transform=transforms.Compose([transforms.ToTensor()]))
val_dataset = datasets.MNIST(&#39;./mnist_data/&#39;, download=False, train=False, transform=transforms.Compose([transforms.ToTensor()]))

# 다운로드 경로,
# download = True 인 경우 데이터셋 다운 받음, 이미 다운 받아진 경우 다운 진행 x
# train -&gt; True 인 경우 학습 데이터로 사용, False 인 경우 학습 데이터로 사용 x
# pytorch 텐서의 형태로 데이터 출력 -&gt; pytorch 연산의 경우ㅠ tensor 형태로 연산 진행

# DataLoader 설정
trn_loader = torch.utils.data.DataLoader(trn_dataset, batch_size=batch_size, shuffle=True)
val_loader = torch.utils.data.DataLoader(val_dataset, batch_size=batch_size, shuffle=True)

# ANN 네트워크
class ANNClassifier(nn.Module):
    def __init__(self):
        super(ANNClassifier, self).__init__() #  항상 torch.nn.Module을 상속받고 시작
        self.fc1 = nn.Linear(28*28,256) ## 28*28 = 입력 데이터의 크기 (28*28 이미지)
        self.fc2 = nn.Linear(256,64)
        self.fc3 = nn.Linear(64,10)

        self.drop = nn.Dropout(p=0.2) # 20% 노드의 출력을 0으로 도출

    # 이미지 데이터의 구조 변환 (batch x 28 x 28 x 1) -&gt; (batch x 28*28)
    def forward(self, x):
        x = x.view(x.size(0), -1)  # 선형 연산 수행 후 비선형 함수(relu) 통과
        x = F.relu(self.fc1(x))
        x = self.drop(x) # dropout 수행

        x = F.relu(self.fc2(x))
        x = self.drop(x)

        # 선형 연산만 수행
        x = self.fc3(x)
        return F.softmax(x, dim=1) # 최종 결과에 softmax 연산 수행
        # softmax : 출력 결과를 확률로 변환 (합 = 1), 입력에 대한 결과의 확률을 알 수 있음

# 정확도를 도출하는 함수
# y = 네트워크 연산 결과, label = 실제 결과
# label은 현재 입력이 어떤 숫자인지의 값을 보여준다.(batch size x 1)
# y는 각 숫자에 대한 확률을 나타낸다. (batch size x 10)
def get_accuracy(y, label):
    y_idx = torch.argmax(y, dim=1)
    # argmax = 확률 중 가장 큰 값의 인덱스를 반환하여 label과 동일한 형식으로 변환

    # 모든 입력에 대해 정답을 맞춘 개수를 전체 개수로 나눠주어 정확도 반환
    result = y_idx-label

    num_correct = 0
    for i in range(len(result)):
        if result[i] == 0:
            num_correct += 1
    return num_correct/y.shape[0]

# 네트워크, 손실함수, 최적화기 선언
ann = ANNClassifier().to(device)  # 네크워크 정의, 설정한 device에서 딥러닝 네트워크 연산을 하도록 설정
criterion = nn.CrossEntropyLoss() # 손실함수 설정, 분류 문제에서 많이 사용
optimizer = optim.Adam(ann.parameters(), lr=learning_rate) 

num_batches = len(trn_loader) # 한 epoch에 대한 전체 미니배치의 수

# 학습 수행
for epoch in range(num_epochs):
    # 학습시 손실함수 값과 정확도 ㄱㅣ록하기 위한 리스트
    trn_loss_list = [] 
    trn_acc_list = []
    # 1epoch연산을 ㄷ위한 반복문 
    # 여기서 data는 각 배치로 나누어진 데이터와 정답을 포함
    for i, data in enumerate(trn_loader):
        # 데이터 처리
        ann.train() #네트워크 학습을 위한 모드로 설정

        # 학습데이터 (x: 입력, label: 정답)를 받아온 후 device에 올려줌
        x, label = data
        x = x.to(device)
        label = label.to(device)

        # 네트워크 연산 및 손실함수 계산
        model_output = ann(x) # 네트워크 연산 수행 후 출력값 도출 (입력 : x, 출력 : model_output)
        loss = criterion(model_output, label) # 손실함수 값 계산 -&gt; 네트워크 연사ㅓㄴ 결과를 연산하여 손실함수 값 도출

        # 네트워크 업데이트
        optimizer.zero_grad() # 학습 수행 전 미분값을 0으로 초기화 (학습 전 꼭 수행 !!!!)
        loss.backward() # 네트워크 변수(가중치 w, 편향 b)에 대한 기울기가 계산
        optimizer.step() # 네트워크 변수 업데이트

        # 학습 정확도 및 손실함수 값 기록
        # 네트워크의 연산 결과와 실제 정답 결과를 비교하여 정확도를 도출
        trn_acc = get_accuracy(model_output, label)

        # 손실함수 값을 trn_loss_list 추가 (item : 하나의 값으로 된 tensor를 일반 값으로 바꿔줌)
        trn_loss_list.append(loss.item()) 
        # 정확도 값을 trn_acc_list에 추가
        trn_acc_list.append(trn_acc)

        # 학습 진행 상황 출력 및 검증셋 연산 수행
        if (i+1) % 100 == 0: # 매 100번째 미니배치 연산마다 진행상황 출력
            ann.eval() # 네트워크를 검증 모드로 설정
            with torch.no_grad(): # 학습에 사용하지 않는 코드들은 해당 블록 내에 기입
                # 검증시 손실함수 값과 정확도를 저장하기 위한 리스트
                val_loss_list = []
                val_acc_list = []

                for j, val in enumerate(val_loader):
                    val_x, val_label = val

                    val_x = val_x.to(device)
                    val_label = val_label.to(device)

                    val_output = ann(val_x)

                    val_loss = criterion(val_output, val_label)
                    val_acc = get_accuracy(val_output, val_label)

                    val_loss_list.append(val_loss.item())
                    val_acc_list.append(val_acc)
                print(&quot;epoch: {}/{} | step: {}/{} | trn loss: {:.4f} | val loss: {:.4f} | trn acc: {:.4f} | val acc: {:.4f}&quot;.format(
                  epoch+1, num_epochs, i+1, num_batches, np.mean(trn_loss_list), np.mean(val_loss_list), np.mean(trn_acc_list), np.mean(val_acc_list)
                ))</code></pre><h3 id="결과">결과</h3>
<p><img src="https://images.velog.io/images/jaewon_/post/5a841907-7750-4420-acc1-fc6d236b0f2d/image.png" alt=""></p>
<h2 id="batch_size-변경">batch_size 변경</h2>
<h3 id="batch_size--128---10">batch_size : 128 -&gt; 10</h3>
<p><img src="https://images.velog.io/images/jaewon_/post/e1d5fbba-e99a-4741-bb0d-87808ce3539e/image.png" alt="">
-&gt; 학습정확도와 검증 정확도 모두 올랐다.
대신 한 번의 epoch를 오래 진행한다. </p>
<h3 id="batch_size--128---250">batch_size : 128 -&gt; 250</h3>
<p><img src="https://images.velog.io/images/jaewon_/post/5cb34d89-3b3b-4985-9847-3665236a61df/image.png" alt="">
학습 정확도와 검증 정확도 모두 줄었다.
대신 학습이 빨리 진행된다.</p>
<h2 id="learning_rate-변경">learning_rate 변경</h2>
<h3 id="learning_rate--00025----005">learning_rate : 0.0025 -&gt;  0.05</h3>
<p><img src="https://images.velog.io/images/jaewon_/post/509eb86a-c555-4cbe-b14a-80313496a47a/image.png" alt="">
값이 커져서 정확도가 매우 떨어진다.</p>
<h3 id="learning_rate--00025----00001">learning_rate : 0.0025 -&gt;  0.0001</h3>
<p><img src="https://images.velog.io/images/jaewon_/post/2cbf2eba-04a5-42dd-b7d6-2adc6c81d2d4/image.png" alt="">
정확도도 살짝 떨어지고, 학습 시간은 비슷하다.</p>
<h3 id="learning_rate--00025----000001">learning_rate : 0.0025 -&gt;  0.00001</h3>
<p><img src="https://images.velog.io/images/jaewon_/post/694fc133-1be3-4f87-8908-0497fd8a10d4/image.png" alt="">
정확도가 많이 떨어진다.  </p>
<h2 id="dropout-변경">dropout 변경</h2>
<h3 id="dropout--02---07">dropout : 0.2 -&gt; 0.7</h3>
<p><img src="https://images.velog.io/images/jaewon_/post/df000646-8f08-48e5-917a-217f7195d7a6/image.png" alt="">
드롭아웃을 너무 많이 실행하면 없어지는 값이 많아서인지 정확도가 떨어진다.</p>
<h3 id="dropout--02---005">dropout : 0.2 -&gt; 0.05</h3>
<p><img src="https://images.velog.io/images/jaewon_/post/63a50ffe-8a90-4b81-b20e-34318b752445/image.png" alt="">
드롭아웃을 조금 실행하면 기존보다는 적지만 overfitting을 조금 줄이는 결과를 가져와 정확도가 오르는 것 같다.</p>
<h2 id="num_epochs-변경">num_epochs 변경</h2>
<h3 id="num_epochs--10---3">num_epochs : 10 -&gt; 3 </h3>
<p><img src="https://images.velog.io/images/jaewon_/post/84c30c07-cb43-4ec8-8ea1-cb710d946659/image.png" alt="">
너무 학습을 적게 해서 underfitting 되었을 것 같다. </p>
<h3 id="num_epochs--10---15">num_epochs : 10 -&gt; 15 </h3>
<p><img src="https://images.velog.io/images/jaewon_/post/a5866788-a9da-4d64-8620-46a2141b736a/image.png" alt="">
학습 정확도와 검증 정확도 모두 올랐다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[머신러닝 기초1 - Pytorch]]></title>
            <link>https://velog.io/@jaewon_/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EA%B8%B0%EC%B4%881-Pytorch</link>
            <guid>https://velog.io/@jaewon_/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EA%B8%B0%EC%B4%881-Pytorch</guid>
            <pubDate>Mon, 21 Jun 2021 13:20:09 GMT</pubDate>
            <description><![CDATA[<p><a href="https://pytorch.org/">pytorch</a></p>
<p>pytorch를 이용한 간단한 네트워크 연산 수행</p>
<ul>
<li>3개의 입력 (랜덤), 2개 출력</li>
<li>은닉층 2 ( 4개의 processing unit)
<img src="https://images.velog.io/images/jaewon_/post/d59d3e84-26be-43ce-b456-047d3bf48e76/%EA%B7%B8%EB%A6%BC1.png" alt=""></li>
</ul>
<pre><code># 라이브러리 불러오기
import torch
import torch.nn as nn # 딥러닝 네트워크 구현 및 학습을 간단하게 수행할 수 있도록 다양한 함수 제공
import torch.nn.functional as F

# GPU 있는 경우 pytorch 연산을 gpu로, 그렇지 않은 경우 cpu로 수행
device = torch.device(&quot;cuda:0&quot; if torch.cuda.is_available() else &quot;cpu&quot;)

# 딥러닝 모델
class Model(nn.Module):
    # 네트워크 변수 정의
    def __init__(self):
        super(Model, self).__init__()
        self.fc1 = nn.Linear(3,4) ## nn.Linear = 선형 연산 (Wx+ b)
        self.fc2 = nn.Linear(4,4)
        self.fc3 = nn.Linear(4,2)

    #네트워크 구조 결정 및 연산 수행    
    def forward(self, x):
        # 선형 연산 수행 후 비선형 함수 통과 
        x = F.relu(self.fc1(x))
        x = F.relu(self.fc2(x))
        # 선형 연산만 수행
        x = self.fc3(x)
        return x

 # 네트워크 선언
 # Model 클래스 호출 후 연산 장치를 할당하고 model로 선언한다.
model = Model().to(device)

# Pytourch를 이용한 연산 수행
# 입력데이터를 생성한다. (2,3) 랜덤 데이터를 torch로 생성 후 연산 장치를 할당한다.
x = torch.rand(2,3).to(device)
# 딥러닝 모델에 입력 x를 대입하여 결과값을 도출한다. (model의 forward함수 연산)
output = model(x)

# 결과 출력
print(output)

# 결과값을 numpy 변환 
# cpu -&gt; 연산장치 cpu로 변환
# detach -&gt; gradient 전파 안되도록 함, 이를 수행하면 해당 텐서값은 딥러닝 학습 수행에 사용 x, numpy과정을 위해 꼭 수행해야 한다.
# numpy -&gt; tensor를 numpy로 변환
output_np = output.cpu().detach().numpy()
print(output_np)</code></pre><p>결과 -&gt; <img src="https://images.velog.io/images/jaewon_/post/21006da8-6a03-49b8-b369-8d8f603fd08b/image.png" alt=""></p>
<p>코드 중 </p>
<pre><code>def __init__(self):
        super(Model, self).__init__()
        self.fc1 = nn.Linear(3,4) ## nn.Linear = 선형 연산 (Wx+ b)</code></pre><p>-&gt; <img src="https://images.velog.io/images/jaewon_/post/423e5166-671d-4fa6-9c0d-40bd557cfba7/image.png" alt=""></p>
<pre><code>self.fc2 = nn.Linear(4,4)
self.fc3 = nn.Linear(4,2)</code></pre><p>이 부분은 각각 
<img src="https://images.velog.io/images/jaewon_/post/211e6acf-45e0-422c-a5f7-5eec48f4e672/image.png" alt="">
이 부분들을 나타낸다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[머신러닝 기초1 - ANN]]></title>
            <link>https://velog.io/@jaewon_/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EA%B8%B0%EC%B4%881-ANN</link>
            <guid>https://velog.io/@jaewon_/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EA%B8%B0%EC%B4%881-ANN</guid>
            <pubDate>Mon, 21 Jun 2021 12:52:17 GMT</pubDate>
            <description><![CDATA[<p>Deep Learning </p>
<ul>
<li><strong>Artificial Neural Network (ANN)</strong></li>
<li>Convolutional Neural Network (CNN)</li>
<li>Recurrent Neural Network (RNN)</li>
</ul>
<p>Deep Q Network (DQN)</p>
<ul>
<li>Q-Learning</li>
<li>Deep Q Network</li>
<li>Deep Q Network 확장 기법</li>
</ul>
<p>Deep Deterministic Policy Gradient (DDPG)</p>
<h2 id="ai--ml--dl">AI &amp; ML &amp; DL</h2>
<p>AI (Artificial Intelligence)</p>
<ul>
<li>인간의 학습능력과 추론능력, 지각능력, 자연언어의 이해 능력 등 컴퓨터 프로그램으로 실현한 기술</li>
</ul>
<p>ML (Machine Learning)</p>
<ul>
<li>인간의 학습능력과 같은 기능을 컴퓨터에서 실현하고자 하는 기술 및 기법</li>
<li>&quot;학습&quot;, 데이터 기반으로 알고리즘이 스스로 학습</li>
</ul>
<p>DL (Deep Learning)</p>
<ul>
<li>다층 구조 형태 신경망, 다양의 데이터로부터 높은 수준의 추상화 모델을 구축하고자 하는 기법</li>
</ul>
<h2 id="ml-학습방법">ML 학습방법</h2>
<p>지도 학습</p>
<ul>
<li>정답이 있는 데이터 이용</li>
<li>분류문제, 회귀문제</li>
</ul>
<p>비지도 학습</p>
<ul>
<li>정답 모름, 데이터 특징만을 이용하여 학습</li>
<li>클러스터링</li>
</ul>
<p>강화 학습</p>
<ul>
<li>보상을 통해 학습 수행</li>
<li>행동을 통한 명확한 보상을 줄 수 있는 곳, 게임 등</li>
</ul>
<h2 id="deep-learning">Deep Learning</h2>
<ul>
<li>알고리즘, GPU(큰 행렬 연산을 위해), Big Data(많은 데이터 -&gt; 좋은 학습)의 발전으로 같이 발전</li>
<li>손 글씨 인식, 표지판 인식, 텍스트 생성 등</li>
</ul>
<h2 id="ann">ANN</h2>
<ul>
<li><p>사람의 뇌와 유사한 방법으로 정보 처리</p>
</li>
<li><p>뉴런을 모밥한 기본 단위 집합으로 구성</p>
</li>
<li><p>원하는 값 학습 -&gt; 가중히 w, 편향 b 학습하는 것</p>
</li>
<li><p>가중치 학습하는 것 중 가장 많이 사용하는 ReLU
y = x  if x &gt;=0
y = 0  if x &lt; 0</p>
</li>
<li><p>입력층, 은닉층, 출력층
-&gt; forward Propagation
결과와 이미 알고 있는 Target값과 비교
&lt;- BackPropagation (은닉층에 가중치들 학습 실행하게 된다)</p>
<p>=&gt; 정답과 유사하게 학습</p>
</li>
<li><p>이때, 출력값과 정답을 비교할때 사용하는 것 : loss 학습
=&gt; loss 함수를 최소화 하도록 weight, bias를 학습하는 것이 목표!!</p>
</li>
<li><p>Underfitting : 학습이 부족하여 제대로 된 예측 수행 x
Good fitting : 적절하게 학습 수행 
Overfitting : 과도하게 학습이 수행, training set에 대해서는 좋은 예측이지만 처음 보는 데이터에는 나쁜 성능 
<img src="https://images.velog.io/images/jaewon_/post/9413dbe3-0bd6-4655-8803-0225c4f07f12/image.png" alt=""></p>
</li>
<li><p>Dropout
-&gt; overfitting 방지하는 기법 중 하나, 특정 확률에 따라 뉴런을 0으로 만들어서 네트워크에 변화 줌
<img src="https://images.velog.io/images/jaewon_/post/ae145927-e18c-4c59-8190-a130dbff44ad/image.png" alt=""></p>
</li>
</ul>
<h3 id="ann-문제점">ANN 문제점</h3>
<ul>
<li>input이 살짝만 바껴도 다른 input으로 인식한다.</li>
<li>모든 데이터 대응하기 위해 많은 데이터 필요</li>
<li>학습 시간 많이 걸리고 성능도 제한적</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[백준 - 12927 배수 스위치]]></title>
            <link>https://velog.io/@jaewon_/%EB%B0%B1%EC%A4%80-12927-%EB%B0%B0%EC%88%98-%EC%8A%A4%EC%9C%84%EC%B9%98</link>
            <guid>https://velog.io/@jaewon_/%EB%B0%B1%EC%A4%80-12927-%EB%B0%B0%EC%88%98-%EC%8A%A4%EC%9C%84%EC%B9%98</guid>
            <pubDate>Sat, 05 Jun 2021 05:35:52 GMT</pubDate>
            <description><![CDATA[<p><a href="https://www.acmicpc.net/problem/12927">12927 배수 스위치 문제</a>
<img src="https://images.velog.io/images/jaewon_/post/066b9ab5-26d2-4b1f-a527-61027a30e20d/image.png" alt=""></p>
<p><img src="https://images.velog.io/images/jaewon_/post/5320babc-6df4-426d-9b18-87953f7507b6/image.png" alt=""></p>
<h2 id="풀이">풀이</h2>
<pre><code>n = list(input())
n.insert(0,&#39;N&#39;)
#print(n)
count = 0
for i in range(1,len(n)):
    if n[i] == &#39;Y&#39;:
        for j in range(i,len(n), i):
            if n[j] == &#39;Y&#39;:
                n[j] = &#39;N&#39;
            else:
                n[j] = &#39;Y&#39;
        count += 1
print(count)</code></pre><p><img src="https://images.velog.io/images/jaewon_/post/3a5a14d2-47fc-4c34-86c1-f167dde624f3/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[ROS 프로그래밍 3]]></title>
            <link>https://velog.io/@jaewon_/ROS-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-3</link>
            <guid>https://velog.io/@jaewon_/ROS-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-3</guid>
            <pubDate>Fri, 04 Jun 2021 16:14:11 GMT</pubDate>
            <description><![CDATA[<h1 id="거북이-8자-주행">거북이 8자 주행</h1>
<h2 id="pub-8py">pub-8.py</h2>
<pre><code>#!/usr/bin/env python

import rospy
from geometry_msgs.msg import Twist

rospy.init_node(&#39;my_node&#39;, anonymous=True)
pub = rospy.Publisher(&#39;/turtle1/cmd_vel&#39;, Twist, queue_size=10)

msg = Twist()
msg.linear.x = 2.0
msg.linear.y = 0.0
msg.linear.z = 0.0
msg.angular.x = 0.0
msg.angular.y = 0.0


rate = rospy.Rate(1)

while not rospy.is_shutdown():
    for _ in range(2):
        msg.angular.z = 4.0
        pub.publish(msg)
        rate.sleep()
    for _ in range(2):
        msg.angular.z = -4.0
        pub.publish(msg)
        rate.sleep()</code></pre><h2 id="pub-sub-8launch">pub-sub-8.launch</h2>
<pre><code>&lt;launch&gt;
    &lt;node pkg=&quot;turtlesim&quot; type=&quot;turtlesim_node&quot; name=&quot;turtlesim_node&quot; /&gt; 
    &lt;node pkg=&quot;my_pkg1&quot; type=&quot;pub-8.py&quot; name=&quot;pub_node&quot; /&gt; 
    &lt;node pkg=&quot;my_pkg1&quot; type=&quot;sub.py&quot; name=&quot;sub_node&quot; output=&quot;screen&quot; /&gt; 
&lt;/launch&gt;</code></pre><h2 id="실행">실행</h2>
<pre><code>roslaunch my_pkg1 pub-sub-8.launch </code></pre><p><img src="https://images.velog.io/images/jaewon_/post/046b818d-c1dd-4ef9-ad17-b8170e1f6f90/image.png" alt="">
애매하지만 8자로 주행하긴 한다!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[ROS 프로그래밍 2]]></title>
            <link>https://velog.io/@jaewon_/ROS-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-2</link>
            <guid>https://velog.io/@jaewon_/ROS-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-2</guid>
            <pubDate>Fri, 04 Jun 2021 15:57:56 GMT</pubDate>
            <description><![CDATA[<h1 id="param-이용">param 이용</h1>
<h2 id="pub-sub-paramlaunch">pub-sub-param.launch</h2>
<pre><code>&lt;launch&gt;
    &lt;node pkg=&quot;turtlesim&quot; type=&quot;turtlesim_node&quot; name=&quot;turtlesim_node&quot; /&gt; 
    &lt;node pkg=&quot;my_pkg1&quot; type=&quot;pub-param.py&quot; name=&quot;pub_node&quot; &gt; 
        &lt;param name=&quot;circle_size&quot; value=&quot;2&quot; /&gt;
    &lt;/node&gt;
    &lt;node pkg=&quot;my_pkg1&quot; type=&quot;sub.py&quot; name=&quot;sub_node&quot; output=&quot;screen&quot; /&gt; 
&lt;/launch&gt;</code></pre><p>==&gt; circle_size = 2</p>
<h2 id="pub-parampy">pub-param.py</h2>
<pre><code>#!/usr/bin/env python

import rospy
from geometry_msgs.msg import Twist

rospy.init_node(&#39;my_node&#39;, anonymous=True)
pub = rospy.Publisher(&#39;/turtle1/cmd_vel&#39;, Twist, queue_size=10)

msg = Twist()
#msg.linear.x = 2.0
linear_X=rospy.get_param(&#39;~circle_size&#39;)
msg.linear.x = linear_X
msg.linear.y = 0.0
msg.linear.z = 0.0
msg.angular.x = 0.0
msg.angular.y = 0.0
msg.angular.z = 1.8

rate = rospy.Rate(1)

while not rospy.is_shutdown():
    pub.publish(msg)
    rate.sleep()</code></pre><p>==&gt; param 이용할 때는 &#39;~&#39;으로 사용하기</p>
<h2 id="실행">실행</h2>
<pre><code>roslaunch my_pkg1 pub-sub-param.launch</code></pre><p><img src="https://images.velog.io/images/jaewon_/post/019077ac-f5be-4579-9515-11af97e85cfd/image.png" alt=""></p>
<h2 id="param-변경-pub-sub-paramlaunch">param 변경, pub-sub-param.launch</h2>
<pre><code>&lt;launch&gt;
    &lt;node pkg=&quot;turtlesim&quot; type=&quot;turtlesim_node&quot; name=&quot;turtlesim_node&quot; /&gt; 
    &lt;node pkg=&quot;my_pkg1&quot; type=&quot;pub-param.py&quot; name=&quot;pub_node&quot; &gt; 
        &lt;param name=&quot;circle_size&quot; value=&quot;4&quot; /&gt;
    &lt;/node&gt;
    &lt;node pkg=&quot;my_pkg1&quot; type=&quot;sub.py&quot; name=&quot;sub_node&quot; output=&quot;screen&quot; /&gt; 
&lt;/launch&gt;</code></pre><p>==&gt; circle_size = 4</p>
<p><img src="https://images.velog.io/images/jaewon_/post/5b23b4a5-e4aa-4c35-b1aa-e4669493701e/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[ROS 프로그래밍1 ]]></title>
            <link>https://velog.io/@jaewon_/ROS-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D1</link>
            <guid>https://velog.io/@jaewon_/ROS-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D1</guid>
            <pubDate>Fri, 04 Jun 2021 15:35:20 GMT</pubDate>
            <description><![CDATA[<p>ROS를 이제 조금 알게 되어 처음부터 다시 실습 실행</p>
<h1 id="거북이-원으로-돌기">거북이 원으로 돌기</h1>
<p>xycar_ws/src 밑에 my_pkg1을 만든다. 
xycar_ws/src/my_pkg1 밑에 launch 폴더를 만든다.</p>
<h2 id="pubpy">pub.py</h2>
<pre><code>#!/usr/bin/env python

import rospy
from geometry_msgs.msg import Twist

rospy.init_node(&#39;my_node&#39;, anonymous=True)
pub = rospy.Publisher(&#39;/turtle1/cmd_vel&#39;, Twist, queue_size=10)

msg = Twist()
msg.linear.x = 2.0
msg.linear.y = 0.0
msg.linear.z = 0.0
msg.angular.x = 0.0
msg.angular.y = 0.0
msg.angular.z = 1.8

rate = rospy.Rate(1)

while not rospy.is_shutdown():
    pub.publish(msg)
    rate.sleep()</code></pre><h3 id="코드-설명">코드 설명</h3>
<pre><code>#!/usr/bin/env python</code></pre><p>파이썬을 사용할 것을 알린다.</p>
<pre><code>import rospy
from geometry_msgs.msg import Twist</code></pre><p>필요한 것들 import 
<a href="http://docs.ros.org/en/melodic/api/geometry_msgs/html/msg/Twist.html">geometry_msgs/Twist</a>
<img src="https://images.velog.io/images/jaewon_/post/15f81d3a-a7ec-4f58-8caf-cf9c438c49e7/image.png" alt=""></p>
<pre><code>rospy.init_node(&#39;my_node&#39;, anonymous=True)
pub = rospy.Publisher(&#39;/turtle1/cmd_vel&#39;, Twist, queue_size=10)
</code></pre><p>my_node라는 노드를 만들고 , 
Publisher객체 생성 (Twist 타입의 /turtle1/cmd_vel 이름으로 토픽을 만들며 Publisher임을 알린다. )</p>
<pre><code>msg = Twist()
msg.linear.x = 2.0
msg.linear.y = 0.0
msg.linear.z = 0.0
msg.angular.x = 0.0
msg.angular.y = 0.0
msg.angular.z = 1.8</code></pre><p>Twist객체에 6개의 숫자들 넣는다.</p>
<pre><code>rate = rospy.Rate(1)</code></pre><p>1초에 한 번 발행을 위함</p>
<pre><code>while not rospy.is_shutdown():
    pub.publish(msg)
    rate.sleep()</code></pre><p>위에 6개의 숫자들 토픽을 publish하고,
1초에 한 번 발행을 위해 그 시간에 맞추어 쉬어간다.</p>
<h3 id="실행">실행</h3>
<p>실행권한을 준다. </p>
<pre><code>chmod +x pub.py</code></pre><h4 id="터미널-1">터미널 1</h4>
<pre><code>roscore</code></pre><p><img src="https://images.velog.io/images/jaewon_/post/5dd058a9-3255-4da5-af6f-f98747ea09c0/image.png" alt=""></p>
<h4 id="터미널-2">터미널 2</h4>
<pre><code>rosrun turtlesim turtlesim_node</code></pre><p><img src="https://images.velog.io/images/jaewon_/post/be1c8d1b-6b89-4de1-87db-547eb9e23557/image.png" alt=""></p>
<h4 id="터미널-3">터미널 3</h4>
<pre><code>rosrun my_pkg1 pub.py</code></pre><p><img src="https://images.velog.io/images/jaewon_/post/4b7b47c6-f4a7-49b2-9fa1-78a1d275d907/image.png" alt=""></p>
<h4 id="터미널-4">터미널 4</h4>
<pre><code>rqt_graph</code></pre><p><img src="https://images.velog.io/images/jaewon_/post/e3dd7dc2-388e-498d-8fc7-a41acded8d37/image.png" alt="">
-&gt; 이때, my_node 뒤에 숫자는</p>
<pre><code>rospy.init_node(&#39;my_node&#39;, anonymous=True)</code></pre><p>에서 anonymous=True 옵션때문이다. </p>
<h1 id="거북이-원으로-돌기-출력">거북이 원으로 돌기 출력</h1>
<h2 id="subpy">sub.py</h2>
<pre><code>#!/usr/bin/env python

import rospy
from geometry_msgs.msg import Pose

def callback(data):
    s = &quot;location: %.2f, %.2f&quot; % (data.x, data.y)
    rospy.loginfo(rospy.get_caller_id() + s)

rospy.init_node(&#39;my_listener&#39;, anonymous=True)
rospy.Subscriber(&#39;/turtle1/pose&#39;, Pose, callback)
rospy.spin()</code></pre><h3 id="코드-설명-1">코드 설명</h3>
<pre><code>#!/usr/bin/env python

import rospy
from geometry_msgs.msg import Pose</code></pre><p>파이썬 사용하고 관련 된 것 import </p>
<pre><code>def callback(data):
    s = &quot;location: %.2f, %.2f&quot; % (data.x, data.y)
    rospy.loginfo(rospy.get_caller_id() + s)
</code></pre><p>data.x, data.y와 id를 loginfo해서 출력</p>
<pre><code>rospy.init_node(&#39;my_listener&#39;, anonymous=True)
rospy.Subscriber(&#39;/turtle1/pose&#39;, Pose, callback)
rospy.spin()</code></pre><p>my_listener이름으로 노드 생성
<a href="http://docs.ros.org/en/melodic/api/turtlesim/html/msg/Pose.html">Pose 타입</a> /turtle1/pose 이라는 토픽이름으로 Subscriber임을 알린다. </p>
<p><img src="https://images.velog.io/images/jaewon_/post/f85a7c70-07bf-4cec-bc5d-755bca8c2543/image.png" alt=""></p>
<p>이때, 메시지를 수신하면 callback 함수 호출
이것을 반복한다.</p>
<h3 id="실행-1">실행</h3>
<p>실행권한을 준다. </p>
<pre><code>chmod +x sub.py</code></pre><h4 id="터미널-1-1">터미널 1</h4>
<pre><code>roscore</code></pre><p><img src="https://images.velog.io/images/jaewon_/post/5dd058a9-3255-4da5-af6f-f98747ea09c0/image.png" alt=""></p>
<h4 id="터미널-2-1">터미널 2</h4>
<pre><code>rosrun turtlesim turtlesim_node</code></pre><p><img src="https://images.velog.io/images/jaewon_/post/be1c8d1b-6b89-4de1-87db-547eb9e23557/image.png" alt=""></p>
<h4 id="터미널-3-1">터미널 3</h4>
<pre><code>rosrun my_pkg1 pub.py</code></pre><p><img src="https://images.velog.io/images/jaewon_/post/4b7b47c6-f4a7-49b2-9fa1-78a1d275d907/image.png" alt=""></p>
<h4 id="터미널-4-1">터미널 4</h4>
<pre><code>rosrun my_pkg1 sub.py</code></pre><p><img src="https://images.velog.io/images/jaewon_/post/1761e7e1-fa3c-4a65-a53d-ac3994e0fb06/image.png" alt=""></p>
<h4 id="터미널-5">터미널 5</h4>
<pre><code>rqt_graph</code></pre><p><img src="https://images.velog.io/images/jaewon_/post/80d528f4-870e-42d5-a2bb-ef86f52586d4/image.png" alt=""></p>
<h1 id="launch-이용">launch 이용</h1>
<blockquote>
<p> 실행</p>
</blockquote>
<pre><code>&lt;node pkg=&quot;패키지 명&quot; type=&quot;노드 포함 소스파일 명&quot; name=&quot;노드 이름&quot; /&gt; </code></pre><p>launch 같이 실행</p>
<pre><code>&lt;include file=&quot;같이 실행할 *.launch 파일 경로&quot; /&gt;
ex 1 ) &lt;include file=&quot;../이름.launch&quot; /&gt;
ex 2 ) &lt;include file=&quot;$(find pkg)/src/launch/이름.launch&quot; /&gt;</code></pre><p>ros 파라미터 서버에 변수 등록, 변수 값 설정</p>
<pre><code>&lt;param name=&quot;변수 이름&quot; type=&quot;변수 타입&quot; value=&quot;변수 값&quot; /&gt;</code></pre><h2 id="pub-sublaunch">pub-sub.launch</h2>
<pre><code>&lt;launch&gt;
    &lt;node pkg=&quot;turtlesim&quot; type=&quot;turtlesim_node&quot; name=&quot;turtlesim_node&quot; /&gt; 
    &lt;node pkg=&quot;my_pkg1&quot; type=&quot;pub.py&quot; name=&quot;pub_node&quot; /&gt; 
    &lt;node pkg=&quot;my_pkg1&quot; type=&quot;sub.py&quot; name=&quot;sub_node&quot; output=&quot;screen&quot; /&gt; 
&lt;/launch&gt;</code></pre><h3 id="실행-2">실행</h3>
<pre><code>roslaunch my_pkg1 pub-sub.launch </code></pre><p><img src="https://images.velog.io/images/jaewon_/post/086d1245-a495-4ee8-b243-7c3286fb326c/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[opencv 기본설정]]></title>
            <link>https://velog.io/@jaewon_/opencv-%EA%B8%B0%EB%B3%B8%EC%84%A4%EC%A0%951</link>
            <guid>https://velog.io/@jaewon_/opencv-%EA%B8%B0%EB%B3%B8%EC%84%A4%EC%A0%951</guid>
            <pubDate>Tue, 01 Jun 2021 12:19:06 GMT</pubDate>
            <description><![CDATA[<h2 id="1-visual-studio-2019-설치">1. visual studio 2019 설치</h2>
<p><a href="https://visualstudio.microsoft.com/ko/vs/">https://visualstudio.microsoft.com/ko/vs/</a>
Community 2019 다운</p>
<h2 id="2-opencv-설치">2. opencv 설치</h2>
<p><a href="https://opencv.org/releases/page/2/">https://opencv.org/releases/page/2/</a></p>
<h2 id="3-설정">3. 설정</h2>
<h3 id="31-visual-studio-확인">3.1 visual studio 확인</h3>
<p>visual studio 에서 hello world! 출력 후, visual studio가 잘 동작하는 것을 확인한다.</p>
<pre><code>#include &lt;iostream&gt;

int main()
{
    std::cout &lt;&lt; &quot;Hello World!\n&quot;;
}</code></pre><h3 id="32-구성-관리자">3.2 구성 관리자</h3>
<p>빌드 - 구성관리자
활성 솔루션 플랫폼을 x64로 바꿔준다.
<img src="https://images.velog.io/images/jaewon_/post/3a1fe670-ac9a-41b8-a1c1-a89c281057b6/image.png" alt=""></p>
<h3 id="33-속성">3.3 속성</h3>
<p>프로젝트 - 속성</p>
<h4 id="331-추가-포함-디렉터리">3.3.1 추가 포함 디렉터리</h4>
<p>속성 - c/c++ - 일반 - 추가 포함 디렉터리</p>
<p>opencv 다운 받은경로 \ build \ include 
와
opencv 다운 받은경로 \ build \ include \ opencv2
를 추가해준다.
ex)
C:\opencv\build\include\opencv2
C:\opencv\build\include
<img src="https://images.velog.io/images/jaewon_/post/a7da3bdc-a4f8-446f-8828-f60843ad68d5/image.png" alt=""></p>
<h4 id="332-추가-라이브러리-디렉터리">3.3.2 추가 라이브러리 디렉터리</h4>
<p>속성 - 링커 - 일반 - 추가 라이브러리 디렉터리</p>
<p>opencv 다운 받은경로 \ build \ x64 \ vc15 \ lib
<img src="https://images.velog.io/images/jaewon_/post/4dae70ae-bb4b-46b5-bbbb-3ee7825affd5/image.png" alt=""></p>
<h4 id="333-추가-종속성">3.3.3 추가 종속성</h4>
<p>C:\opencv\build\x64\vc15\lib 밑에 
<img src="https://images.velog.io/images/jaewon_/post/28afa19b-a2fb-4d70-9060-548c04d1db43/image.png" alt="">
두 가지가 있는데 지금은 디버깅으로 설정했으므로 opencv_world430d.lib를 복사한다.
그 후 추가 종속성에 추가한다.</p>
<p><img src="https://images.velog.io/images/jaewon_/post/e83e9e20-c899-4a68-a418-a9313d12da9f/image.png" alt=""></p>
<h2 id="4확인">4.확인</h2>
<p>이때 opencv.hpp 는
C:\opencv\build\include\opencv2
에 있으며
이것을 include 하면 다른 헤더파일도 포함된다.</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;opencv.hpp&gt;

using namespace cv;
int main()
{
    Mat img = imread(&quot;lenna.jpg&quot;);
    imshow(&quot;lenna.jpg&quot;, img);
    waitKey(0);
    destroyAllWindows();
}</code></pre><blockquote>
<p>💡 lenna.jpg 는 구글에서 쉽게 구할 수 있다.
프로젝트 폴더안에 넣어야 한다.
(소스코드 있는 곳)</p>
</blockquote>
<p><img src="https://images.velog.io/images/jaewon_/post/8ff33b61-a31a-4126-a1d6-ccf8af65a860/image.png" alt=""></p>
<h2 id="-5-안-될-경우">+) 5. 안 될 경우</h2>
<p>--&gt; 이때 솔루션 빌드를 하고 디버거를 누르면 실행이 되어야 하는데
<img src="https://images.velog.io/images/jaewon_/post/f3b951ba-27cc-4a56-a663-fef3c17039a1/image.png" alt=""></p>
<p>opencv_world430d.dll이 없다는 오류가 나온다.</p>
<p>--&gt; 환경변수 설정
시스템 변수 - Path 에 
opencv 설치 경로 \ build\x64\vc15\bin
ex)
C:\opencv\build\x64\vc15\bin</p>
<p>를 추가한다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[pygame 프로그래밍 - 설치]]></title>
            <link>https://velog.io/@jaewon_/pygame-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D</link>
            <guid>https://velog.io/@jaewon_/pygame-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D</guid>
            <pubDate>Sat, 29 May 2021 11:36:47 GMT</pubDate>
            <description><![CDATA[<h2 id="1-python-370-설치">1. python 3.7.0 설치</h2>
<p><a href="https://www.python.org/downloads/release/python-370/">https://www.python.org/downloads/release/python-370/</a></p>
<h2 id="2-pygame-설치">2. pygame 설치</h2>
<p>윈도우 cmd에서 C:\ 로 이동</p>
<pre><code>pip install pygame==1.9.6</code></pre><h2 id="3-pillow-설치">3. pillow 설치</h2>
<pre><code>pip install pillow</code></pre><p>-&gt; 버전 지정해줄 필요 없다.
<img src="https://images.velog.io/images/jaewon_/post/deb3177c-71e5-4db5-ba1c-3996d3a7a17a/image.png" alt=""></p>
<h2 id="4-numpy-설치">4. numpy 설치</h2>
<p><a href="https://pypi.org/project/numpy/#files">https://pypi.org/project/numpy/#files</a>
에서 numpy-1.20.3-cp37-cp37m-win_amd64.whl을 다운 받는다.</p>
<pre><code>python -m pip install .\numpy-1.20.3-cp37-cp37m-win_amd64.whl</code></pre><p><img src="https://images.velog.io/images/jaewon_/post/61baa808-4690-46f0-abad-0ae9481035a8/image.png" alt=""></p>
<h2 id="5-visual-studio-설치">5. visual studio 설치</h2>
<p><a href="https://visualstudio.microsoft.com/ko/vs/">https://visualstudio.microsoft.com/ko/vs/</a>
Community 2019 다운</p>
<ul>
<li>C++를 사용한 데스크톱 개발</li>
<li>MSVC v141 -VS 2017 C++ x64/x84 빌드... 선택
<img src="https://images.velog.io/images/jaewon_/post/d2f0bd6f-f748-4fdd-82bd-c068e8e232ad/image.png" alt=""></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[TIL] 210527]]></title>
            <link>https://velog.io/@jaewon_/TIL-210527</link>
            <guid>https://velog.io/@jaewon_/TIL-210527</guid>
            <pubDate>Wed, 26 May 2021 15:34:28 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>국민대 자율주행 대회 준비</p>
</blockquote>
<ul>
<li>예선 과제 1,2,3 문서 작성
==&gt; 문서 작성 깔끔하게, 그림 깔끔하게
ppt에서 선택해서 그림으로 저장</li>
</ul>
<blockquote>
<p>K-Digital-Training: 자율주행 데브코스</p>
</blockquote>
<ul>
<li>3D 자동차 구동 제어 과제</li>
<li>센서장치 기초, IMU 활용 </li>
<li>라이다 활용</li>
</ul>
<p>==&gt; 밀리지 말기, 과제 왜 안되는지 다시 해보기
==&gt; imu활용 과제, 라이다 활용 과제도 내일 시도</p>
<blockquote>
<p>노트북에 실습 필요한 내용 설치
(vm, ubuntu, ros, ..)</p>
</blockquote>
<ul>
<li>의존성 문제 계속 나온다
<img src="https://images.velog.io/images/jaewon_/post/ef02b03d-f0f7-4065-9a1a-ec5b8115c7d4/1621996703446.png" alt=""></li>
</ul>
<p>==&gt; 인터넷에서 찾은 명령어들 다 실행해본 것 같은데 안 된다😥
==&gt; 내일 다시 도전!!</p>
<p>** TIL도 꾸준히!!!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[우분투 설치 후 작업]]></title>
            <link>https://velog.io/@jaewon_/%EC%9A%B0%EB%B6%84%ED%88%AC-%EC%84%A4%EC%B9%98-%ED%9B%84-%EC%9E%91%EC%97%85</link>
            <guid>https://velog.io/@jaewon_/%EC%9A%B0%EB%B6%84%ED%88%AC-%EC%84%A4%EC%B9%98-%ED%9B%84-%EC%9E%91%EC%97%85</guid>
            <pubDate>Tue, 25 May 2021 18:03:20 GMT</pubDate>
            <description><![CDATA[<h2 id="1-open-vm-tools-설치">1. open-vm-tools 설치</h2>
<ul>
<li>화면 크기, 파일 복사, 클립 보드 등 여러가지 설정 가능<pre><code>sudo apt install open-vm-tools{,-desktop}</code></pre><img src="https://images.velog.io/images/jaewon_/post/15d20fcc-1220-4f35-91cb-bad3acfe660f/image.png" alt=""></li>
</ul>
<p>설치 완료 후 재부팅</p>
<pre><code>sudo reboot</code></pre><h2 id="2-데일리-서비스-비활성화">2. 데일리 서비스 비활성화</h2>
<p>apt-daily.timer 
apt-daily-upgrade.timer
비활성화 </p>
<pre><code>sudo systemctl disable --now apt-daily.timer
sudo systemctl disable --now apt-daily-upgrade.timer</code></pre><p><img src="https://images.velog.io/images/jaewon_/post/cc39a21c-2d9a-4d57-984c-399286641122/image.png" alt="">
확인하기</p>
<pre><code> sudo systemctl status apt-daily.timer
 sudo systemctl status apt-daily-upgrade.timer
</code></pre><p><img src="https://images.velog.io/images/jaewon_/post/276d4863-bce7-481a-acc6-131f59e2b690/image.png" alt="">
-&gt; disabled/ inactive 임을 확인</p>
<h2 id="3-폰트-설치">3. 폰트 설치</h2>
<pre><code>sudo apt -y install fonts-nanum* fonts-naver*</code></pre><p>터미널 - 편집 - 기본설정 - 프로파일
<img src="https://images.velog.io/images/jaewon_/post/78a54a5f-7e82-4d45-821f-e00a08e47ae1/image.png" alt=""></p>
<h2 id="4-설정">4. 설정</h2>
<p>4.1) 키보드 설정
설정 - 지역 및 언어
한국어 (Hangul)만 남기기
<img src="https://images.velog.io/images/jaewon_/post/8961c558-a943-4bd5-8247-07093490cd28/image.png" alt=""></p>
<p>4.2) 자동 화면 잠금
설정- 개인 정보
<img src="https://images.velog.io/images/jaewon_/post/1f2263ee-dbc1-4a39-a844-f4d3a63bc275/image.png" alt="">
설정- 전원
빈화면
<img src="https://images.velog.io/images/jaewon_/post/a80e94f9-1f8b-445a-8a6b-f3eefd7dd64f/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[VMware 설치 2]]></title>
            <link>https://velog.io/@jaewon_/VMware-%EC%84%A4%EC%B9%98-2</link>
            <guid>https://velog.io/@jaewon_/VMware-%EC%84%A4%EC%B9%98-2</guid>
            <pubDate>Tue, 25 May 2021 17:16:30 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/jaewon_/post/488200d8-a676-4cfb-84b4-371e84f8a67f/image.png" alt="">
한국어 선택 -&gt; ubuntu 설치
<img src="https://images.velog.io/images/jaewon_/post/d4acdc9e-4ddf-4a9b-a3b4-51ab0cf64212/image.png" alt="">
<img src="https://images.velog.io/images/jaewon_/post/bfcf36f5-75fa-49c6-95a7-b0f21457d45d/image.png" alt="">
<img src="https://images.velog.io/images/jaewon_/post/a210e162-a4cc-435c-8fb3-bc0918596ed9/image.png" alt="">
<img src="https://images.velog.io/images/jaewon_/post/33a98d2f-5464-4d02-85d0-0f75804a3023/image.png" alt="">
-&gt;가상머신이라 상관없다. =&gt; 계속하기 선택
<img src="https://images.velog.io/images/jaewon_/post/876f9622-ef1f-4579-8094-45f79e947a68/image.png" alt="">
<img src="https://images.velog.io/images/jaewon_/post/e016fe11-36ef-4bd0-aacd-8d826990f0bd/image.png" alt="">
<img src="https://images.velog.io/images/jaewon_/post/cdad5cc8-5f5d-4411-905d-cfa129f4a253/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[VMware 설치 1]]></title>
            <link>https://velog.io/@jaewon_/VMware-%EC%84%A4%EC%B9%98-1</link>
            <guid>https://velog.io/@jaewon_/VMware-%EC%84%A4%EC%B9%98-1</guid>
            <pubDate>Tue, 25 May 2021 17:09:18 GMT</pubDate>
            <description><![CDATA[<p>노트북에 새로 vmware 설치</p>
<h2 id="설치">설치</h2>
<ol>
<li><a href="https://www.vmware.com/kr/products/workstation-player/workstation-player-evaluation.html">vmware</a></li>
<li><a href="http://mirror.kakao.com/ubuntu-releases/18.04.5/ubuntu-18.04.5-desktop-amd64.iso">Ubuntu 18.04.5</a>
<a href="http://mirror.kakao.com/ubuntu-releases/18.04.5/ubuntu-18.04.5-desktop-amd64.iso">http://mirror.kakao.com/ubuntu-releases/18.04.5/ubuntu-18.04.5-desktop-amd64.iso</a></li>
</ol>
<h2 id="vmware-설치">vmware 설치</h2>
<p><img src="https://images.velog.io/images/jaewon_/post/96e8500f-c69e-4693-a3fb-20612d9b02b5/image.png" alt="">
<img src="https://images.velog.io/images/jaewon_/post/e83a44bb-fdab-4f1d-bd13-20adce9233c9/image.png" alt="">
<img src="https://images.velog.io/images/jaewon_/post/1194d642-2c9d-40a9-8ef8-727601d50362/image.png" alt="">
<img src="https://images.velog.io/images/jaewon_/post/ca8806bd-aa4c-4f3f-8f25-432214131d82/image.png" alt="">
-&gt; disabled 하기
<img src="https://images.velog.io/images/jaewon_/post/5980de0d-d2d4-4404-889b-959e91ecbe1b/image.png" alt=""></p>
<p><img src="https://images.velog.io/images/jaewon_/post/f842772a-4b2a-4c0c-b937-3b8fab815165/image.png" alt=""></p>
<p><img src="https://images.velog.io/images/jaewon_/post/3519c44b-b840-49e5-965f-9e19d5883d6a/image.png" alt="">
-&gt; Create a New Virtual Machine 선택</p>
<p><img src="https://images.velog.io/images/jaewon_/post/f0351fdd-8509-4bd5-9706-0b0d295f3511/image.png" alt="">
<img src="https://images.velog.io/images/jaewon_/post/8b7b04e7-328e-48a2-8e9d-8358b60f2ee2/image.png" alt=""></p>
<p><img src="https://images.velog.io/images/jaewon_/post/bf527cea-0f57-4064-968a-1ee78ac09f7b/image.png" alt="">
-&gt; 파일이 만들어 지는 위치
<img src="https://images.velog.io/images/jaewon_/post/6d424255-a8fe-41ed-a1db-2cbc68517ee6/image.png" alt="">
-&gt; 넉넉하게 잡기
<img src="https://images.velog.io/images/jaewon_/post/22f3dbbf-2d71-4f7a-a6e7-1506c76922f4/image.png" alt="">
-&gt; edit virtual machine settings 선택</p>
<p><img src="https://images.velog.io/images/jaewon_/post/16c66c38-cd55-4093-b99e-3a67bf948148/image.png" alt=""></p>
<p><img src="https://images.velog.io/images/jaewon_/post/bbdbcc58-9710-4953-b3cc-9ee8ae77ad4f/image.png" alt="">
-&gt; 처음에 받은 kakao iso 위치를 선택해준다.</p>
]]></description>
        </item>
    </channel>
</rss>