<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>HwangSoon_96</title>
        <link>https://velog.io/</link>
        <description>'개'으른 '게'발자</description>
        <lastBuildDate>Wed, 16 Mar 2022 10:53:33 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. HwangSoon_96. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/hwangsoon_0" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[백준 2293번 동전1 Java(자바) 풀이]]></title>
            <link>https://velog.io/@hwangsoon_0/%EB%B0%B1%EC%A4%80-2293%EB%B2%88-%EB%8F%99%EC%A0%841-Java%EC%9E%90%EB%B0%94-%ED%92%80%EC%9D%B4</link>
            <guid>https://velog.io/@hwangsoon_0/%EB%B0%B1%EC%A4%80-2293%EB%B2%88-%EB%8F%99%EC%A0%841-Java%EC%9E%90%EB%B0%94-%ED%92%80%EC%9D%B4</guid>
            <pubDate>Wed, 16 Mar 2022 10:53:33 GMT</pubDate>
            <description><![CDATA[<pre><code class="language-java">import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class BOJ_G5_2293_동전1 {

    static BufferedReader br;
    static StringTokenizer st;
    static int n, k;
    static int[] coins, dp;

    public static void main(String[] args) throws IOException {

        // System.setIn(new FileInputStream(&quot;./input.txt&quot;));
        br = new BufferedReader(new InputStreamReader(System.in));

        st = new StringTokenizer(br.readLine());
        n = Integer.parseInt(st.nextToken()); // 동전 종류
        k = Integer.parseInt(st.nextToken()); // 동전 합

        coins = new int[n + 1];
        dp = new int[k + 1];
        for(int i = 1; i &lt;= n; i++) {
            coins[i] = Integer.parseInt(br.readLine());
        }

        dp[0] = 1;
        for(int i = 1; i &lt;= n; i++) {
            // coins[i] 동전으로 만들 수 있는 경우의 수를 dp에 순차적으로 더한다
            // ex) 1원 짜리 경우의 수 dp에 다 더하고 -&gt; 2원 짜리 경우의 수 dp에 다 더하고..
            for(int j = coins[i]; j &lt;= k; j++) {
                dp[j] = dp[j] + dp[j - coins[i]]; 
            }
        }

        System.out.println(dp[k]);

    }

}</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[백준 3190번 뱀 Java(자바) 풀이]]></title>
            <link>https://velog.io/@hwangsoon_0/%EB%B0%B1%EC%A4%80-1339%EB%B2%88-%EB%8B%A8%EC%96%B4%EC%88%98%ED%95%99-Java%EC%9E%90%EB%B0%94-%ED%92%80%EC%9D%B4-78mtghvk</link>
            <guid>https://velog.io/@hwangsoon_0/%EB%B0%B1%EC%A4%80-1339%EB%B2%88-%EB%8B%A8%EC%96%B4%EC%88%98%ED%95%99-Java%EC%9E%90%EB%B0%94-%ED%92%80%EC%9D%B4-78mtghvk</guid>
            <pubDate>Wed, 16 Mar 2022 09:45:27 GMT</pubDate>
            <description><![CDATA[<pre><code class="language-java">import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Deque;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

public class BOJ_G5_3190_뱀 {

    static BufferedReader br;
    static StringTokenizer st;
    static int N, K, L;
    static int[][] map;
    static int[][] dir = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
    static int answer, d;

    public static void main(String[] args) throws NumberFormatException, IOException {

        // System.setIn(new FileInputStream(&quot;./input.txt&quot;));
        br = new BufferedReader(new InputStreamReader(System.in));

        N = Integer.parseInt(br.readLine());
        map = new int[N+1][N+1];
        map[1][1] = 2;

        K = Integer.parseInt(br.readLine());
        for(int i = 0; i &lt; K; i++) {
            st = new StringTokenizer(br.readLine());
            int r = Integer.parseInt(st.nextToken());
            int c = Integer.parseInt(st.nextToken());
            map[r][c] = 1;
        }

        L = Integer.parseInt(br.readLine());
        Queue&lt;Dir&gt; q = new LinkedList&lt;&gt;();
        for(int i = 0; i &lt; L; i++) {
            st = new StringTokenizer(br.readLine());
            q.add(new Dir(Integer.parseInt(st.nextToken()), st.nextToken()));
        }

        Deque&lt;Point&gt; snake = new LinkedList&lt;&gt;();
        snake.addLast(new Point(1, 1));

        while(true) {

            answer++;

            Point p = snake.peekLast(); // 머리 위치
            int nr = p.r + dir[d % 4][0];
            int nc = p.c + dir[d % 4][1];

            if(1 &lt;= nr &amp;&amp; nr &lt;= N &amp;&amp; 1 &lt;= nc &amp;&amp; nc &lt;= N) {
                if(map[nr][nc] == 2) {
                    break; // 자기한테 닿아서 끝
                }

                if(map[nr][nc] == 0) { //사과가 없으면 꼬리 없애고 있으면 그대로
                    Point tail = snake.pollFirst();
                    map[tail.r][tail.c] = 0;
                }

                snake.offerLast(new Point(nr, nc));
                map[nr][nc] = 2;
            } else
                break; // 아니면 벽에 닿아서 끝

            // 방향전환 할 게 남아있고, 그 시간이 현재 시간과 같다면
            if(!q.isEmpty() &amp;&amp; q.peek().t == answer) {
                Dir temp = q.poll();
                if(temp.s.equals(&quot;L&quot;)) {
                    d += 3; // 왼쪽
                } else {
                    d += 1; // 오른쪽
                }
            }
        }

        System.out.println(answer);

    }

    static class Point {
        int r, c;

        public Point(int r, int c) {
            this.r = r;
            this.c = c;
        }
    }

    static class Dir {
        int t;
        String s;

        public Dir(int t, String s) {
            this.t = t;
            this.s = s;
        }
    }

}</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[백준 1339번 단어수학 Java(자바) 풀이]]></title>
            <link>https://velog.io/@hwangsoon_0/%EB%B0%B1%EC%A4%80-1339%EB%B2%88-%EB%8B%A8%EC%96%B4%EC%88%98%ED%95%99-Java%EC%9E%90%EB%B0%94-%ED%92%80%EC%9D%B4</link>
            <guid>https://velog.io/@hwangsoon_0/%EB%B0%B1%EC%A4%80-1339%EB%B2%88-%EB%8B%A8%EC%96%B4%EC%88%98%ED%95%99-Java%EC%9E%90%EB%B0%94-%ED%92%80%EC%9D%B4</guid>
            <pubDate>Wed, 16 Mar 2022 09:39:19 GMT</pubDate>
            <description><![CDATA[<pre><code class="language-java">import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class BOJ_G4_1339_단어수학 {

    static BufferedReader br;
    static int N;
    static String str;
    static int[] alpha;
    static int l, num, answer;

    public static void main(String[] args) throws NumberFormatException, IOException {

        // System.setIn(new FileInputStream(&quot;./input.txt&quot;));
        br = new BufferedReader(new InputStreamReader(System.in));

        N = Integer.parseInt(br.readLine());
        alpha = new int[26];

        for(int i = 0; i &lt; N; i++) {
            str = br.readLine();
            // l += str.length();
            for(int j = 0; j &lt; str.length(); j++) {
                 // 자릿수만큼 10의 거듭제곱 더해준다
                alpha[str.charAt(j) - &#39;A&#39;] += (Math.pow(10, str.length() - j - 1));
            }
        }

        Arrays.sort(alpha);

        // System.out.println(Arrays.toString(alpha));

        num = 9;

        for(int i = 25; i &gt;= 0; i--) {
            if(alpha[i] == 0) {
                continue;
            }
            answer += (alpha[i] * num); // 큰 애부터 9 8 7 6... 순서대로 붙여준다
            num--;
        }

        System.out.println(answer);

    }

}</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[백준 7562번 나이트의 이동 Java(자바) 풀이]]></title>
            <link>https://velog.io/@hwangsoon_0/%EB%B0%B1%EC%A4%80-7562%EB%B2%88-%EB%82%98%EC%9D%B4%ED%8A%B8%EC%9D%98-%EC%9D%B4%EB%8F%99-Java%EC%9E%90%EB%B0%94-%ED%92%80%EC%9D%B4</link>
            <guid>https://velog.io/@hwangsoon_0/%EB%B0%B1%EC%A4%80-7562%EB%B2%88-%EB%82%98%EC%9D%B4%ED%8A%B8%EC%9D%98-%EC%9D%B4%EB%8F%99-Java%EC%9E%90%EB%B0%94-%ED%92%80%EC%9D%B4</guid>
            <pubDate>Wed, 16 Mar 2022 09:29:03 GMT</pubDate>
            <description><![CDATA[<pre><code class="language-java">import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

public class BOJ_S2_7562_나이트의이동 {

    static BufferedReader br;
    static StringTokenizer st;
    static int T, l;
    static int[][] map;
    static boolean[][] isVisited;
    static Point start, end;
    static int[][] dir = {{-1, -2}, {-2, -1}, {-2, 1}, {-1, 2}, {1, 2}, {2, 1}, {2, -1}, {1, -2}};

    public static void main(String[] args) throws NumberFormatException, IOException {

        // System.setIn(new FileInputStream(&quot;./input.txt&quot;));
        br = new BufferedReader(new InputStreamReader(System.in));

        T = Integer.parseInt(br.readLine());
        for(int t = 0; t &lt; T; t++) {
            l = Integer.parseInt(br.readLine());
            map = new int[l][l];
            isVisited = new boolean[l][l];

            st = new StringTokenizer(br.readLine());
            start = new Point(Integer.parseInt(st.nextToken()),
                                        Integer.parseInt(st.nextToken()), 0);
            st = new StringTokenizer(br.readLine());
            end = new Point(Integer.parseInt(st.nextToken()),
                                        Integer.parseInt(st.nextToken()), 0);

            bfs(start);

        }

    }

    static void bfs(Point p) {
        Queue&lt;Point&gt; q = new LinkedList&lt;&gt;();
        q.add(p);
        isVisited[p.r][p.c] = true;

        while(!q.isEmpty()) {
            Point temp = q.poll();
            int tempR = temp.r;
            int tempC = temp.c;
            int cnt = temp.cnt;

            if(tempR == end.r &amp;&amp; tempC == end.c) { // 목표점에 도착
                System.out.println(temp.cnt);
                return;
            }

            for(int i = 0; i &lt; 8; i++) { // 8방 탐색
                int nr = tempR + dir[i][0];
                int nc = tempC + dir[i][1];

                if(nr &gt;= 0 &amp;&amp; nr &lt; l &amp;&amp; nc &gt;= 0 &amp;&amp; nc &lt; l &amp;&amp; !isVisited[nr][nc]) {
                    q.add(new Point(nr, nc, cnt + 1));
                    isVisited[nr][nc] = true;
                }
            }

        }

    }

    static class Point { // 좌표 클래스에 정답을 구하기 위한 cnt 추가
        int r, c, cnt;

        public Point(int r, int c, int cnt) {
            this.r = r;
            this.c = c;
            this.cnt = cnt;
        }
    }

}
</code></pre>
]]></description>
        </item>
    </channel>
</rss>