<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>레벨업 일지</title>
    <link>https://0713k.tistory.com/</link>
    <description>쉽고 자세하게</description>
    <language>ko</language>
    <pubDate>Wed, 27 May 2026 01:44:15 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>24시간이모자란</managingEditor>
    <image>
      <title>레벨업 일지</title>
      <url>https://tistory1.daumcdn.net/tistory/5065088/attach/f617e95f9c2b431892cf443bc1647e56</url>
      <link>https://0713k.tistory.com</link>
    </image>
    <item>
      <title>[Java] 프로그래머스  석유 시추</title>
      <link>https://0713k.tistory.com/112</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/250136&quot;&gt;코딩테스트 연습 - [PCCP 기출문제] 2번 | 프로그래머스 스쿨 (programmers.co.kr)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1701482736654&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래머스&quot; data-og-description=&quot;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&quot; data-og-host=&quot;programmers.co.kr&quot; data-og-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/250136&quot; data-og-url=&quot;https://programmers.co.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cBEBcB/hyUE3HVh93/zvEjp9YhFbAYcYKamCLjk0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/bwwIr7/hyUE9BmHEd/eIETPl470KqSbZXCKQPqkk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/250136&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/250136&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cBEBcB/hyUE3HVh93/zvEjp9YhFbAYcYKamCLjk0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/bwwIr7/hyUE9BmHEd/eIETPl470KqSbZXCKQPqkk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래머스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 많은 석유량을 return 해보자&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;풀이는 다음과 같습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;dfs 하면서, 석유 덩어리가 나오면 해당 덩어리 전처에 마킹을 합니다.&lt;/li&gt;
&lt;li&gt;해시맵에 마킹번호, 덩어리 개수를 저장합니다.&lt;/li&gt;
&lt;li&gt;해시맵에 저장이 끝난 후 , 시추관으로 위에서 아래로 탐색하면서 Set 에 마킹 넘버링을 담습니다.&lt;/li&gt;
&lt;li&gt;answer 변수를 update 하면서 모든 열 에대해 탐색합니다.&lt;/li&gt;
&lt;li&gt;answer를 리턴합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1701483167512&quot; class=&quot;reasonml&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;Stream.of(s).mapToInt(myMap::get).sum();&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에 Stream.of(set)&amp;nbsp; 구조로 스트림을 구성했는데, nullPointer&amp;nbsp; 오류 가 떴다.&amp;nbsp; 이유는 Stream.of( A ) 메서드는 A 타입을 Stream&amp;lt; A &amp;gt; 이렇게 감싸는 형태이기 때문이다. 위의 코드는 Stream&amp;lt; Set&amp;lt;Integer&amp;gt; &amp;gt;&amp;nbsp; 으로 mapToInt 에 들어간다, 하지만 map 의 key는 Integer이기 때문에 키가 존재하지 않아서 nullpointerException 이 발생하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;다음 코드처럼 수정하여서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; Stream&amp;lt;Integer&amp;gt; 타입으로 구성하게 하였다.&lt;/p&gt;
&lt;pre id=&quot;code_1701482994152&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; int addAll = s
                .stream()
                .mapToInt(myMap::get)
                .sum();&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;코드&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1701482667765&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*;
import java.util.stream.*;

class Solution {
    
    int dx[] = {0,0,1,-1};
    int dy[] = {1,-1,0,0};
    
    public int solution(int[][] land) {
        
        int answer = 0;
        List&amp;lt;int[]&amp;gt; list = new ArrayList&amp;lt;&amp;gt;();
        HashMap&amp;lt;Integer, Integer&amp;gt; myMap = new HashMap&amp;lt;&amp;gt;();
        
        int idx = 2;
        int cnt = 0;
        
        for(int i =0 ;i &amp;lt; land.length; i++){
            for(int j = 0 ;j &amp;lt; land[0].length;j ++){
                if(land[i][j] == 1){
                    cnt = dfs(land,i,j,idx);
                    myMap.put(idx++,cnt);
                }
            }
        }
        
        for(int j =0 ;j&amp;lt; land[0].length; j++){
            Set&amp;lt;Integer&amp;gt; s = new HashSet&amp;lt;&amp;gt;();
            for(int i = 0;i &amp;lt; land.length ;i ++){
                if(land[i][j] &amp;gt; 1 &amp;amp;&amp;amp; !s.contains(land[i][j] )){
                    s.add(land[i][j]);
                }
            }
            
            int addAll = s
                .stream()
                .mapToInt(myMap::get)
                .sum();
            
            answer = Math.max(answer, addAll);                
        }
        return answer;
    }
    public int dfs(int[][] l , int x, int y,int m){
        if(x &amp;lt; 0 || y &amp;lt; 0 || x &amp;gt; l.length -1 || y &amp;gt; l[0].length-1 || l[x][y] !=1 )return 0;
        int ret = 1;
        l[x][y] = m;
        for(int k =0; k &amp;lt; 4; k++){
            ret += dfs(l,x + dx[k], y+dy[k], m);
        }
        return ret;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>알고리즘/프로그래머스</category>
      <author>24시간이모자란</author>
      <guid isPermaLink="true">https://0713k.tistory.com/112</guid>
      <comments>https://0713k.tistory.com/112#entry112comment</comments>
      <pubDate>Sat, 2 Dec 2023 11:14:11 +0900</pubDate>
    </item>
    <item>
      <title>[PSQL] Postgres pg_hba.conf 파일 없음 에러</title>
      <link>https://0713k.tistory.com/111</link>
      <description>&lt;h1&gt;글을쓰며&lt;/h1&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목 없음.png&quot; data-origin-width=&quot;599&quot; data-origin-height=&quot;431&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgITtb/btsA6TZCGSt/DZCXN1KLM6AFUlpGxr8kY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgITtb/btsA6TZCGSt/DZCXN1KLM6AFUlpGxr8kY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgITtb/btsA6TZCGSt/DZCXN1KLM6AFUlpGxr8kY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcgITtb%2FbtsA6TZCGSt%2FDZCXN1KLM6AFUlpGxr8kY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;599&quot; height=&quot;431&quot; data-filename=&quot;제목 없음.png&quot; data-origin-width=&quot;599&quot; data-origin-height=&quot;431&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2023년 2월 어마무시한 이메일이 날라온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;블로그에 프로그래머스 풀이법을 포스팅하다가 , 사람들에게 내 풀이에 오류가 있나 알고싶어 프로그래머스 질문하기 란에 블로그 글을 공유하였다. 새롭게 알게 된 것이 있으면 숨기는 것이 아니라 공유해야 한다고 생각해서 꾸준히 작성하고 공유하였다. 또한 사람들이 검색하여 들어와 조회수가 늘어남에 재미가 들리었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만, 프로그래머스의 알림으로 저작권에 위반하는 것을 인지하여 블로그 수익창출 하던 것을 멈추고, 노션 개인 파일에 업로드를 하기 시작했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;티스토리에 마지막 글을 쓴지 수개월이 지나고 , 다시 블로그를 찾아와 보니 조회수가 꾸준히 20 회 미만 있어왔다. 최고의 동기부여는 역시 &quot;즐기는 자 모드&quot; 이다. 행위가 재미있어야 코딩 공부에 열정을 부을 수 있음을 기대하고 다시 블로그 글을 작성한다. 블로그 글을 2023년 11월 30 일날 확인해보니, 조회수가 7천 명에 달하는데, 7만 명이 될때까지 다시 문제 풀이, 에러 디버깅을 공유할 예정이다.몰론 수익창출은 하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;문제&lt;/h1&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목 없음.png&quot; data-origin-width=&quot;893&quot; data-origin-height=&quot;1014&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c4TtDe/btsBcRFI6r7/KxSekKy3nyWKdBiCBiZQSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c4TtDe/btsBcRFI6r7/KxSekKy3nyWKdBiCBiZQSK/img.png&quot; data-alt=&quot;구글링을 하면, /etc/postgresql 경로를 확인해보라한다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c4TtDe/btsBcRFI6r7/KxSekKy3nyWKdBiCBiZQSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc4TtDe%2FbtsBcRFI6r7%2FKxSekKy3nyWKdBiCBiZQSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;719&quot; height=&quot;816&quot; data-filename=&quot;제목 없음.png&quot; data-origin-width=&quot;893&quot; data-origin-height=&quot;1014&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;구글링을 하면, /etc/postgresql 경로를 확인해보라한다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아침에 원격 Centos 서버에 구글링으로 Postgres 설치를 완료하고 저녁에 접속하고 포트 변경할 일이 생겨 pg_hba.conf 설정파일을 찾기 위해 구글링을 한 후 서버 파일을 찾아봤지만, /etc/postgres .. 경로가 존재하지 않았음.&lt;/li&gt;
&lt;li&gt;또한 , Postgres 쉘 명령어가 안먹혔다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;원인&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;확인해보니 버전이 바뀌면서, 설정 파일 위치가 변하였음.&lt;/li&gt;
&lt;li&gt;구글링의 postgresql 버전은 옛날 버전으로 ( 8 이하 ) 내가 설치한 버전과는 다름을 알수있다. ( 버전 11)&lt;/li&gt;
&lt;li&gt;Postgres 쉘 명령어는 , 쉘을 오픈 하지 않았기 때문이었음.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;해결&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;항상 postgres 쉘 호출하기 위해, sudo -i -u postgres 를 먼저 적용하자.&lt;/li&gt;
&lt;li&gt;원하는 파일 위치를 확인해보자 bash 명령어 구분을 위해 input 뒤에 $ 붙였다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;#postgres 쉘 루트 유저 로그인 
$ sudo -i -u postgres 

# confgiure file 위치 확인
$ psql -U postgres -c 'show config_file' 

# 비밀번호 변경 
postgres=# $ alter user postgres PASSWORD '저장할비밀번호';
ALTER ROLE

# pg_hba.conf 파일 위치 확인
postgres=# $SHOW hba_file;
			hba_file              
------------------------------------
 /var/lib/pgsql/11/data/pg_hba.conf
(1 row)&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설정 파일 위치는 다음 폴더에 있었다.&lt;/li&gt;
&lt;li&gt;설정 파일에서 port&amp;nbsp; 4406 으로 바꾸었다.&lt;/li&gt;
&lt;li&gt;다음 두 설정 파일 위치이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;$ sudo vi /var/lib/pgsql/11/data/postgresql.conf

# pg_hba 파일 위치 확인.
/var/lib/pgsql/11/data/pg_hba.conf&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;참고&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://askubuntu.com/questions/256534/how-do-i-find-the-path-to-pg-hba-conf-from-the-shell&quot;&gt;https://askubuntu.com/questions/256534/how-do-i-find-the-path-to-pg-hba-conf-from-the-shell&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Linux/에러</category>
      <author>24시간이모자란</author>
      <guid isPermaLink="true">https://0713k.tistory.com/111</guid>
      <comments>https://0713k.tistory.com/111#entry111comment</comments>
      <pubDate>Thu, 30 Nov 2023 01:31:24 +0900</pubDate>
    </item>
    <item>
      <title>[Java] 백준 18222 투에-모스 문자열</title>
      <link>https://0713k.tistory.com/110</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/18222&quot;&gt;18222번: 투에-모스 문자열 (acmicpc.net)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1688406816419&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;18222번: 투에-모스 문자열&quot; data-og-description=&quot;0과 1로 이루어진 길이가 무한한 문자열 X가 있다. 이 문자열은 다음과 같은 과정으로 만들어진다. X는 맨 처음에 &amp;quot;0&amp;quot;으로 시작한다.&amp;nbsp; X에서 0을 1로, 1을 0으로&amp;nbsp;뒤바꾼 문자열 X'을 만든다. X의 뒤에&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/18222&quot; data-og-url=&quot;https://www.acmicpc.net/problem/18222&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/eY8VH/hyTcyoZae9/FNYguJvoebaKbZQghx9q70/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/18222&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/18222&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/eY8VH/hyTcyoZae9/FNYguJvoebaKbZQghx9q70/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;18222번: 투에-모스 문자열&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;0과 1로 이루어진 길이가 무한한 문자열 X가 있다. 이 문자열은 다음과 같은 과정으로 만들어진다. X는 맨 처음에 &quot;0&quot;으로 시작한다.&amp;nbsp; X에서 0을 1로, 1을 0으로&amp;nbsp;뒤바꾼 문자열 X'을 만든다. X의 뒤에&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반복되는 조건을 어떻게 처리할지가 관건인 문제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 조건을 다시 확인해 보자&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;color: #555555;&quot;&gt;X는 맨 처음에 &quot;0&quot;으로 시작한다.&amp;nbsp;&lt;/li&gt;
&lt;li style=&quot;color: #555555;&quot;&gt;X에서 0을 1로, 1을 0으로&amp;nbsp;뒤바꾼 문자열&lt;span&gt;&amp;nbsp;&lt;/span&gt;X'을 만든다.&lt;/li&gt;
&lt;li style=&quot;color: #555555;&quot;&gt;X의 뒤에&lt;span&gt;&amp;nbsp;&lt;/span&gt;X'를 붙인 문자열을&lt;span&gt;&amp;nbsp;&lt;/span&gt;X로 다시 정의한다.&amp;nbsp;&lt;/li&gt;
&lt;li style=&quot;color: #555555;&quot;&gt;2~3의 과정을 무한히 반복한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열 최대 길이 10^18를&amp;nbsp; 일일히 확인하려면 TLE 가 뜬다. 따라서 반복되는 조건을 이용하여 찾아야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;문제 조건1,2,3 을 반복해서 하다보면, 현재 문자열&amp;nbsp; X 일때, ( X.len / 2 ) 를 기점으로 좌우 대칭, 반전임을 알 수 있다.즉 현재 위치 K 번째에서 , X length /2 의 왼쪽에 있으면 반전( 0 과 1 ) 을 하지 않고, 오른쪽에 있으면 반전을 주는 식으로 구현해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주어진 문자 : 0110 1001 1001 0110&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인 덱스&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:0123 4567 8/9/10/11 ...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 있을때 8번째를 찾고 싶다.( 맨 앞에 0 이 0번째라 가정 )&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 8은 size/ 2 를 기준으로 오른쪽임으로 좌우 반전을 적용하고 왼쪽 위치에서 찾아야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왼쪽 위치에서 0 임으로, 좌우 반전 적용한 1이 정답이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 과정을 반복한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;풀이는 다음과 같다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;초기 배열 [ 1, 0, 0, 1 ] 을 생성한다.&lt;/li&gt;
&lt;li&gt;현재 size 절반 기준으로 왼쪽에 있으면 size만 /= 2 적용한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;오른쪽에 있으면, idx 를 그만큼 감소시키고, isFlip을 적용시킨다&lt;/li&gt;
&lt;li&gt;[1,0,0,1]&amp;nbsp; 위치에 flip 을 적용시켜 정답을 출력한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;코드&lt;/h2&gt;
&lt;pre id=&quot;code_1688406849127&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.io.*;
import java.lang.reflect.Array;
import java.util.*;
public class Main {

    public static void main(String[] args) throws IOException {
        Main m = new Main();
        m.solution();
    }
    public void solution() throws IOException {
        FastReader fr = new FastReader();
        long N = fr.nextLong()-1;
        long size = 1;
        while(size &amp;lt;= N ){
            size*=2;
            //System.out.println(size+&quot; ,&quot;+N+&quot; ,&quot;+(size&amp;lt;N));
        }

        int arr[] = new int[]{0,1,1,0};
        int isFlip = 0;
        long idx = N;
        while(idx &amp;gt; 3){
            size /=2 ;
            if(idx &amp;gt;= size){
                idx -= size;
                isFlip = (isFlip + 1)%2;
            }
        }


        System.out.println((arr[(int)idx]+ isFlip)%2);
    }


    public static class FastReader {
        BufferedReader br;
        StringTokenizer st;

        public FastReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        public FastReader(String s) throws FileNotFoundException {
            br = new BufferedReader(new FileReader(new File(s)));
        }

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }

        long nextLong() {
            return Long.parseLong(next());
        }

        double nextDouble() {
            return Double.parseDouble(next());
        }

        String nextLine() {
            String str = &quot;&quot;;
            try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return str;
        }
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘/백준</category>
      <category>백준</category>
      <category>백준 18222</category>
      <category>분할정복</category>
      <author>24시간이모자란</author>
      <guid isPermaLink="true">https://0713k.tistory.com/110</guid>
      <comments>https://0713k.tistory.com/110#entry110comment</comments>
      <pubDate>Wed, 5 Jul 2023 04:08:03 +0900</pubDate>
    </item>
    <item>
      <title>[Java] 백준 1074 Z</title>
      <link>https://0713k.tistory.com/109</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1074&quot;&gt;1074번: Z (acmicpc.net)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1688406528150&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;1074번: Z&quot; data-og-description=&quot;한수는 크기가 2N &amp;times; 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2&amp;times;2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N &amp;gt;&amp;nbsp;1인 경우, 배열을&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1074&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1074&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Ianhk/hyTcECAdrt/WpyeERbpMGYKgn0CIcXds1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480,https://scrap.kakaocdn.net/dn/bEoFuO/hyTcMUX7Hu/PvImO2zZNGFkPfhKTzphk0/img.png?width=1066&amp;amp;height=1070&amp;amp;face=0_0_1066_1070,https://scrap.kakaocdn.net/dn/qCXFP/hyTcG8dzFe/7ceIHWjfeUYU8xhC7NXHD0/img.png?width=646&amp;amp;height=650&amp;amp;face=0_0_646_650&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1074&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1074&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Ianhk/hyTcECAdrt/WpyeERbpMGYKgn0CIcXds1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480,https://scrap.kakaocdn.net/dn/bEoFuO/hyTcMUX7Hu/PvImO2zZNGFkPfhKTzphk0/img.png?width=1066&amp;amp;height=1070&amp;amp;face=0_0_1066_1070,https://scrap.kakaocdn.net/dn/qCXFP/hyTcG8dzFe/7ceIHWjfeUYU8xhC7NXHD0/img.png?width=646&amp;amp;height=650&amp;amp;face=0_0_646_650');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;1074번: Z&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;한수는 크기가 2N &amp;times; 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2&amp;times;2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N &amp;gt;&amp;nbsp;1인 경우, 배열을&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반복문으로 구현하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;풀이는 다음과 같다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;현재 size를 기준으로 (x,y) 가 몇 사분면에 위치하는지 체크한다.&lt;/li&gt;
&lt;li&gt;정답 변수에 (사분면 * ( size/2 ) * (size/2) ) 을 누적합한다.&lt;/li&gt;
&lt;li&gt;더 작은 단위로 쪼개기 위해 현재 (행, 열)에&amp;nbsp; 모듈러 연산을 적용한다.&lt;/li&gt;
&lt;li&gt;정답 변수를 출력한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;코드&lt;/h2&gt;
&lt;pre id=&quot;code_1688406649974&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.io.*;
import java.lang.reflect.Array;
import java.util.*;
public class Main {

    public static void main(String[] args) throws IOException {
        Main m = new Main();
        m.solution();
    }
    public void solution() throws IOException {
        FastReader fr = new FastReader();
        int N;
        int r,c;
        N = fr.nextInt();
        r = fr.nextInt();
        c = fr.nextInt();
        int maxSize = Math.max(r,c);
        long ans = 0;
        int size = 1;
        while( size &amp;lt;= maxSize){
            size *= 2;
        }
        int d;
        int quadrant;
        while(size &amp;gt; 1){
            d = size/2;
            quadrant = (r / d) * 2 + (c / d);
            ans += quadrant * d * d;
            r %= d;
            c %= d;
            size /=2;
        }

        System.out.println(ans);

    }



    public static class FastReader {
        BufferedReader br;
        StringTokenizer st;

        public FastReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        public FastReader(String s) throws FileNotFoundException {
            br = new BufferedReader(new FileReader(new File(s)));
        }

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }

        long nextLong() {
            return Long.parseLong(next());
        }

        double nextDouble() {
            return Double.parseDouble(next());
        }

        String nextLine() {
            String str = &quot;&quot;;
            try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return str;
        }
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘/백준</category>
      <category>백준</category>
      <category>백준 1074</category>
      <category>자바</category>
      <author>24시간이모자란</author>
      <guid isPermaLink="true">https://0713k.tistory.com/109</guid>
      <comments>https://0713k.tistory.com/109#entry109comment</comments>
      <pubDate>Tue, 4 Jul 2023 02:52:31 +0900</pubDate>
    </item>
    <item>
      <title>[Java] 백준 17829 222-풀링</title>
      <link>https://0713k.tistory.com/108</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/17829&quot;&gt;17829번: 222-풀링 (acmicpc.net)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1688406172765&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;17829번: 222-풀링&quot; data-og-description=&quot;조기 졸업을 꿈꾸는 종욱이는 요즘 핫한 딥러닝을 공부하던 중, 이미지 처리에 흔히 쓰이는 합성곱 신경망(Convolutional Neural Network, CNN)의 풀링 연산에 영감을 받아 자신만의 풀링을 만들고 이를 22&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/17829&quot; data-og-url=&quot;https://www.acmicpc.net/problem/17829&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bfw5oV/hyTcL2PITH/vwMaQKUgCCCIBgSrFKe4k0/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480,https://scrap.kakaocdn.net/dn/qvKU8/hyTcHTBJzq/r2jpDgeryJKWpDuUkZl3eK/img.png?width=1810&amp;amp;height=937&amp;amp;face=0_0_1810_937&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/17829&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/17829&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bfw5oV/hyTcL2PITH/vwMaQKUgCCCIBgSrFKe4k0/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480,https://scrap.kakaocdn.net/dn/qvKU8/hyTcHTBJzq/r2jpDgeryJKWpDuUkZl3eK/img.png?width=1810&amp;amp;height=937&amp;amp;face=0_0_1810_937');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;17829번: 222-풀링&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;조기 졸업을 꿈꾸는 종욱이는 요즘 핫한 딥러닝을 공부하던 중, 이미지 처리에 흔히 쓰이는 합성곱 신경망(Convolutional Neural Network, CNN)의 풀링 연산에 영감을 받아 자신만의 풀링을 만들고 이를 22&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재귀를 사용해서 문제 풀이를 구현할 줄 아는지 묻는 문제.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미지 압축일종인 CNN 풀링중 222-풀링은 4 개의 원소 중 2번째로 큰 원소를 찾는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;stride 기법으로 , 배열 원소 4개씩 살펴 본 뒤, 2번째로 큰 원소를 k번째 칸에 삽입한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;풀이는 다음과 같다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;현재 size 를 파라미터로 담아 재귀 호출을 한다. 1이 되면 종료한다.&lt;/li&gt;
&lt;li&gt;각 단계마다 4개의 원소를 리스트에 담아 정렬한다.&lt;/li&gt;
&lt;li&gt;4개중 2번째로 큰 원소니깐, 정렬된 리스트의 3번째 값을 저장한다.&lt;/li&gt;
&lt;li&gt;재귀 호출을 불러. 1번 알고리즘으로 돌아간다.&lt;/li&gt;
&lt;li&gt;정답을 리턴한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;코드&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1688406160097&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.io.*;
import java.lang.reflect.Array;
import java.util.*;
public class Main {

    int arr[][];

    ArrayList&amp;lt;Integer&amp;gt; l;
    public static void main(String[] args) throws IOException {
        Main m = new Main();
        m.solution();
    }
    public void solution() throws IOException {
        FastReader fr = new FastReader();
        int N = fr.nextInt();
        arr = new int[N][N];
        l = new ArrayList&amp;lt;&amp;gt;();
        for(int i =0 ;i &amp;lt; N ;i++){
            for(int j= 0 ; j&amp;lt; N ;j++){
                arr[i][j] = fr.nextInt();
            }
        }
        pooling2By2(N);
        System.out.println(arr[0][0]);

    }
    public void pooling2By2(int N){
        if(N == 1)return;
        int a;
        int b;
        int stride =0;
        
        for(int i =0 ; i&amp;lt; N ;i+=2){
            for(int j =0 ;j &amp;lt; N ;j+=2){
                l.removeAll(l);
                l.add(arr[i][j]);
                l.add(arr[i+1][j]);
                l.add(arr[i+1][j+1]);
                l.add(arr[i][j+1]);
                Collections.sort(l);
               arr[stride/(N/2)][stride%(N/2)] = l.get(2);
                //System.out.println(l+&quot;, &quot;+l.get(2));
                //System.out.println(stride/(N/2)+&quot;,&quot;+stride%(N/2));
                stride++;
            }
        }
        pooling2By2(N/2);
    }


    public static class FastReader {
        BufferedReader br;
        StringTokenizer st;

        public FastReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        public FastReader(String s) throws FileNotFoundException {
            br = new BufferedReader(new FileReader(new File(s)));
        }

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }

        long nextLong() {
            return Long.parseLong(next());
        }

        double nextDouble() {
            return Double.parseDouble(next());
        }

        String nextLine() {
            String str = &quot;&quot;;
            try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return str;
        }
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘/백준</category>
      <category>백준</category>
      <category>자바</category>
      <author>24시간이모자란</author>
      <guid isPermaLink="true">https://0713k.tistory.com/108</guid>
      <comments>https://0713k.tistory.com/108#entry108comment</comments>
      <pubDate>Tue, 4 Jul 2023 02:48:05 +0900</pubDate>
    </item>
    <item>
      <title>[Java] 백준 16935 배열 돌리기 3</title>
      <link>https://0713k.tistory.com/107</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/16935&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/16935&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1687980633778&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;16935번: 배열 돌리기 3&quot; data-og-description=&quot;크기가 N&amp;times;M인 배열이 있을 때, 배열에 연산을 R번 적용하려고 한다. 연산은 총 6가지가 있다. 1번 연산은 배열을 상하 반전시키는 연산이다. 1 6 2 9 8 4 &amp;rarr; 4 2 9 3 1 8 7 2 6 9 8 2 &amp;rarr; 9 2 3 6 1 5 1 8 3 4 2 9 &amp;rarr; &quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/16935&quot; data-og-url=&quot;https://www.acmicpc.net/problem/16935&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/AUL17/hyS8nhtSMd/XmqydCtE4i9NkP3AF7GiU1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/16935&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/16935&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/AUL17/hyS8nhtSMd/XmqydCtE4i9NkP3AF7GiU1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;16935번: 배열 돌리기 3&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;크기가 N&amp;times;M인 배열이 있을 때, 배열에 연산을 R번 적용하려고 한다. 연산은 총 6가지가 있다. 1번 연산은 배열을 상하 반전시키는 연산이다. 1 6 2 9 8 4 &amp;rarr; 4 2 9 3 1 8 7 2 6 9 8 2 &amp;rarr; 9 2 3 6 1 5 1 8 3 4 2 9 &amp;rarr;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조금 시간이 걸렸던 구현 문제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 요구사항은 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주어진 배열의 순서를 바꾸는데 구현만 하면 되고, 최적화는 필요없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 N번 연산의 요구사항에 맞추어 구현했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1번 연산의 구현 코드이다.&lt;/p&gt;
&lt;pre class=&quot;matlab&quot; style=&quot;background-color: #2b2b2b; color: #a9b7c6;&quot;&gt;&lt;code&gt;public void upAndDownFlip(int[][] m){
    int r, c,t;
    r = m.length;
    c = m[0].length;
    for(int j = 0 ;j &amp;lt; c;j ++){
        for(int i = 0 ;i &amp;lt; r/2; i++){
            t = m[i][j];
            m[i][j] = m[r-i-1][j];
            m[r-i-1][j] = t;
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2번 연산의 구현 코드이다&lt;/p&gt;
&lt;pre class=&quot;matlab&quot; style=&quot;background-color: #2b2b2b; color: #a9b7c6;&quot;&gt;&lt;code&gt;public void leftAndRightFlip(int[][]m){
    int r, c,t;
    r = m.length;
    c = m[0].length;
    for(int i = 0 ;i &amp;lt; r; i++){
        for(int j= 0 ;j &amp;lt; c/2;j ++){
            t = m[i][j];
            m[i][j] = m[i][c - j - 1];
            m[i][c - j - 1] = t;
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3번 연산의 구현 코드이다&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background-color: #2b2b2b; color: #a9b7c6;&quot;&gt;&lt;code&gt;public int[][] rotateRight(int[][]m){
    int r, c,t;
    r = m.length;
    c = m[0].length;
    int[][] ret = new int[c][r];
    for(int i= 0 ;i &amp;lt; c; i++){
        for(int j=0 ;j &amp;lt; r; j++){
            ret[i][j] = m[r-j-1][i];
        }
    }
    return ret;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4번 연산의 구현 코드이다&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background-color: #2b2b2b; color: #a9b7c6;&quot;&gt;&lt;code&gt;public int[][] rotateLeft(int[][] m){
    int r, c,t;
    r = m.length;
    c = m[0].length;
    int[][] ret = new int[c][r];
    for(int i= 0 ;i &amp;lt; c; i++){
        for(int j=0 ;j &amp;lt; r; j++){
            ret[i][j] = m[j][c-i-1];
        }
    }
    return ret;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5, 6번 연산은 새로운 2차원 배열에&amp;nbsp; 4가지 섹터 카피한 후 , 주어진 위치에 삽입하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5번, 6번 연산의 구현 코드이다&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot; style=&quot;background-color: #2b2b2b; color: #a9b7c6;&quot;&gt;&lt;code&gt;public void operate5(int[][]m){
    int r, c,t, gOne, gTwo, gThree, gFour;
    r = m.length/2;
    c = m[0].length/2;
    int [][]arrOne = new int[r][c];
    int [][]arrTwo = new int[r][c];
    int [][]arrThree = new int[r][c];
    int [][]arrFour = new int[r][c];
    InitsubArr(m, arrOne, 0, 0);
    InitsubArr(m, arrTwo, 0, c);
    InitsubArr(m, arrThree, r, 0);
    InitsubArr(m, arrFour, r, c);

    deepCopy2D(m, arrThree, 0, 0);
    deepCopy2D(m, arrOne, 0, c);
    deepCopy2D(m, arrFour, r, 0);
    deepCopy2D(m, arrTwo, r, c);
}
public void operate6(int[][] m){
    int r, c,t, gOne, gTwo, gThree, gFour;
    r = m.length/2;
    c = m[0].length/2;
    int [][]arrOne = new int[r][c];
    int [][]arrTwo = new int[r][c];
    int [][]arrThree = new int[r][c];
    int [][]arrFour = new int[r][c];
    InitsubArr(m, arrOne, 0, 0);
    InitsubArr(m, arrTwo, 0, c);
    InitsubArr(m, arrThree, r, 0);
    InitsubArr(m, arrFour, r, c);

    deepCopy2D(m, arrTwo, 0, 0);
    deepCopy2D(m, arrFour, 0, c);
    deepCopy2D(m, arrOne, r, 0);
    deepCopy2D(m, arrThree, r, c);
}

public void InitsubArr(int[][] t, int[][]o, int x, int y){
    int r, c;
    r = o.length;
    c = o[0].length;
    for(int i = x ; i&amp;lt; x + r ;i++){
        for(int j = y ; j&amp;lt; y + c;j ++){
            o[i-x][j-y] = t[i][j];
        }
    }
}
public void deepCopy2D(int[][] t, int[][]o, int x, int y){
    //(x,y) 시작 위치
    int r, c;
    r = o.length;
    c = o[0].length;
    for(int i = x ; i&amp;lt; x + r ;i++){
        for(int j = y ; j&amp;lt; y + c;j ++){
            t[i][j] = o[i-x][j-y];
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;코드&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 코드는 다음과 같다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1687980617171&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
    BufferedWriter bw;
    int[][] arr;
    public static void main(String args[]) throws IOException {
        Main m = new Main();
        m.solution();
    }
    public void solution() throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        bw = new BufferedWriter(new OutputStreamWriter(System.out));
        String str = br.readLine();
        StringTokenizer st;
        int N = Integer.parseInt(str.split(&quot; &quot;)[0]);
        int M = Integer.parseInt(str.split(&quot; &quot;)[1]);
        int R = Integer.parseInt(str.split(&quot; &quot;)[2]);
        arr = new int[N][M];
        for(int i = 0 ;i &amp;lt; N ;i++){
            st = new StringTokenizer(br.readLine());
            for(int j= 0 ;j &amp;lt; M ;j++){
                arr[i][j] = Integer.parseInt(st.nextToken());
            }
        }
        ArrayList&amp;lt;Integer&amp;gt; l = new ArrayList&amp;lt;&amp;gt;();
        st = new StringTokenizer(br.readLine());
        for (int i = 0; i &amp;lt; R; i++) {
            l.add(Integer.parseInt(st.nextToken()));
        }
        int s = l.size();
        for(int i =0  ;i &amp;lt; s; i++){
            if(l.get(i) == 1){
                upAndDownFlip(arr);
            }else if(l.get(i) == 2){
                leftAndRightFlip(arr);
            }else if(l.get(i) == 3){
                arr = rotateRight(arr);
            }else if(l.get(i) == 4){
                arr = rotateLeft(arr);
            }else if(l.get(i) == 5){
                operate5(arr);
            }else if(l.get(i) == 6){
                operate6(arr);
            }
        }
        for(int x[] : arr){
            for(int y : x){
                bw.write(Integer.toString(y)+ &quot; &quot;);
            }
            bw.write(&quot;\n&quot;);
        }
        bw.close();
    }
    public void upAndDownFlip(int[][] m){
        int r, c,t;
        r = m.length;
        c = m[0].length;
        for(int j = 0 ;j &amp;lt; c;j ++){
            for(int i = 0 ;i &amp;lt; r/2; i++){
                t = m[i][j];
                m[i][j] = m[r-i-1][j];
                m[r-i-1][j] = t;
            }
        }
    }
    public void leftAndRightFlip(int[][]m){
        int r, c,t;
        r = m.length;
        c = m[0].length;
        for(int i = 0 ;i &amp;lt; r; i++){
            for(int j= 0 ;j &amp;lt; c/2;j ++){
                t = m[i][j];
                m[i][j] = m[i][c - j - 1];
                m[i][c - j - 1] = t;
            }
        }
    }
    public int[][] rotateRight(int[][]m){
        int r, c,t;
        r = m.length;
        c = m[0].length;
        int[][] ret = new int[c][r];
        for(int i= 0 ;i &amp;lt; c; i++){
            for(int j=0 ;j &amp;lt; r; j++){
                ret[i][j] = m[r-j-1][i];
            }
        }
        return ret;
    }
    public int[][] rotateLeft(int[][] m){
        int r, c,t;
        r = m.length;
        c = m[0].length;
        int[][] ret = new int[c][r];
        for(int i= 0 ;i &amp;lt; c; i++){
            for(int j=0 ;j &amp;lt; r; j++){
                ret[i][j] = m[j][c-i-1];
            }
        }
        return ret;
    }
    public void operate5(int[][]m){
        int r, c,t, gOne, gTwo, gThree, gFour;
        r = m.length/2;
        c = m[0].length/2;
        int [][]arrOne = new int[r][c];
        int [][]arrTwo = new int[r][c];
        int [][]arrThree = new int[r][c];
        int [][]arrFour = new int[r][c];
        InitsubArr(m, arrOne, 0, 0);
        InitsubArr(m, arrTwo, 0, c);
        InitsubArr(m, arrThree, r, 0);
        InitsubArr(m, arrFour, r, c);

        deepCopy2D(m, arrThree, 0, 0);
        deepCopy2D(m, arrOne, 0, c);
        deepCopy2D(m, arrFour, r, 0);
        deepCopy2D(m, arrTwo, r, c);
    }
    public void operate6(int[][] m){
        int r, c,t, gOne, gTwo, gThree, gFour;
        r = m.length/2;
        c = m[0].length/2;
        int [][]arrOne = new int[r][c];
        int [][]arrTwo = new int[r][c];
        int [][]arrThree = new int[r][c];
        int [][]arrFour = new int[r][c];
        InitsubArr(m, arrOne, 0, 0);
        InitsubArr(m, arrTwo, 0, c);
        InitsubArr(m, arrThree, r, 0);
        InitsubArr(m, arrFour, r, c);

        deepCopy2D(m, arrTwo, 0, 0);
        deepCopy2D(m, arrFour, 0, c);
        deepCopy2D(m, arrOne, r, 0);
        deepCopy2D(m, arrThree, r, c);
    }

    public void InitsubArr(int[][] t, int[][]o, int x, int y){
        int r, c;
        r = o.length;
        c = o[0].length;
        for(int i = x ; i&amp;lt; x + r ;i++){
            for(int j = y ; j&amp;lt; y + c;j ++){
                o[i-x][j-y] = t[i][j];
            }
        }
    }
    public void deepCopy2D(int[][] t, int[][]o, int x, int y){
        //(x,y) 시작 위치
        int r, c;
        r = o.length;
        c = o[0].length;
        for(int i = x ; i&amp;lt; x + r ;i++){
            for(int j = y ; j&amp;lt; y + c;j ++){
                t[i][j] = o[i-x][j-y];
            }
        }
    }

}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘/백준</category>
      <category>백준</category>
      <category>백준 16935</category>
      <category>백준 구현</category>
      <category>자바</category>
      <author>24시간이모자란</author>
      <guid isPermaLink="true">https://0713k.tistory.com/107</guid>
      <comments>https://0713k.tistory.com/107#entry107comment</comments>
      <pubDate>Thu, 29 Jun 2023 04:34:34 +0900</pubDate>
    </item>
    <item>
      <title>[Java] 백준 10799 쇠막대기</title>
      <link>https://0713k.tistory.com/106</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/10799&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/10799&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1687980283274&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;10799번: 쇠막대기&quot; data-og-description=&quot;여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/10799&quot; data-og-url=&quot;https://www.acmicpc.net/problem/10799&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bbPGgN/hyS9RVx6F5/Lg9j3HY2bbsWe8YpVOm8sk/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480,https://scrap.kakaocdn.net/dn/J7ket/hyS8ut7iwN/4WD5JEXQIK6SgZ1VilJUV0/img.png?width=534&amp;amp;height=284&amp;amp;face=0_0_534_284&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/10799&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/10799&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bbPGgN/hyS9RVx6F5/Lg9j3HY2bbsWe8YpVOm8sk/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480,https://scrap.kakaocdn.net/dn/J7ket/hyS8ut7iwN/4WD5JEXQIK6SgZ1VilJUV0/img.png?width=534&amp;amp;height=284&amp;amp;face=0_0_534_284');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;10799번: 쇠막대기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제가 '(' 와 ')' 기호 의 콤비내이션으로 이루어져있어 스택 알고리즘 으로 접근하는게 편하다 생각들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제를 해석하면&amp;nbsp; () 는 레이저 광선을 의미하고&amp;nbsp; (( .. )) 처럼 열림-닫힘 쌍이 아닌 것들은 쇠 막대기이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 레이저가 한번 지잉 하면, 쇠막대기 개수만큼 정답 변수에 누적합을 하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;풀이 알고리즘은 다음과 같다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;현재 기호가 ( 이면 stack +1 .&lt;/li&gt;
&lt;li&gt;현재 기호가 ) 이면 stack -=1&amp;nbsp; 적용하고 다음과 같다.
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;현재 인덱스 i 에서 i-1 번째가 ( 기호이면 쇠막대기 만큼 더한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;현재 인덱스 i 에서 i-1번째가 ) 기호이면, 쇠막대기가 감소하는 것임으로 +1 을 한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;정답을 리턴한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;코드&lt;/h2&gt;
&lt;pre id=&quot;code_1687980546926&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.io.*;
import java.util.*;

public class Main {
    BufferedWriter bw;

    public static void main(String args[]) throws IOException {
        Main m = new Main();
        m.solution();
    }
    public void solution() throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        bw = new BufferedWriter(new OutputStreamWriter(System.out));
        String str = br.readLine();
        int stack =0;
        int ans =0;
        char[] charArr = str.toCharArray();
        for(int i =0  ;i &amp;lt; charArr.length; i++){
            if(charArr[i] == '(')
                stack++;
            else if(charArr[i] == ')'){
                stack--;
                if(charArr[i-1] == '('){
                    ans +=stack;
                }else{
                    ans ++;
                }
            }
        }
        bw.write(Integer.toString(ans));

        bw.close();
    }

}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘/백준</category>
      <category>백준</category>
      <category>백준 10799</category>
      <category>자바</category>
      <author>24시간이모자란</author>
      <guid isPermaLink="true">https://0713k.tistory.com/106</guid>
      <comments>https://0713k.tistory.com/106#entry106comment</comments>
      <pubDate>Thu, 29 Jun 2023 04:29:18 +0900</pubDate>
    </item>
    <item>
      <title>[Java] 백준 5464.주차장</title>
      <link>https://0713k.tistory.com/105</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/5464&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/5464&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1687795423599&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;5464번: 주차장&quot; data-og-description=&quot;시내 주차장은 1부터 N까지 번호가 매겨진 N개의 주차 공간을 가지고 있다. 이 주차장은 매일 아침 모든 주차 공간이 비어 있는 상태에서 영업을 시작하며, 하룻동안 다음과 같은 방식으로 운영&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/5464&quot; data-og-url=&quot;https://www.acmicpc.net/problem/5464&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/d3khJ4/hyS8zN2a94/kzc74dRJBwWnXkiXjVjjM0/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/5464&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/5464&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/d3khJ4/hyS8zN2a94/kzc74dRJBwWnXkiXjVjjM0/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;5464번: 주차장&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;시내 주차장은 1부터 N까지 번호가 매겨진 N개의 주차 공간을 가지고 있다. 이 주차장은 매일 아침 모든 주차 공간이 비어 있는 상태에서 영업을 시작하며, 하룻동안 다음과 같은 방식으로 운영&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 생각한 문제에서 요구사항은 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주어진 조건대로 waiting Q를 구현하고싶은데 우선순위를 수정할줄 아느냐?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구현 문제를 풀때, 의미가 있는 변수 이름으로 설정해주면 내 코드를 보더라도 헷갈리지 않고 풀이할수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주석을 사용하는 대신 변수 네이밍으로 뜻만 보더라도 알아볼 수 있게 하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;풀이 알고리즘은 다음과 같다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;현재 차가 들어올 타임일때
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;현재 대기 번호 뽑은 차량이 존재하거나 주차 공간이 없어 대기 번호를 발급 받아야할때
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;대기 번호를 발급한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;주차장을 사용하고 이것을 기록한다&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;현재 차가 나갈때
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;요금 정산을 한다.&lt;/li&gt;
&lt;li&gt;대기 번호가 존재하면, 대기 번호에서 하나 뽑아 차량을 주차시킨다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이해하기 쉽게 코드에 경로 주석을 적었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;코드&lt;/h2&gt;
&lt;pre id=&quot;code_1687795955462&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.awt.*;
import java.io.*;
import java.util.*;

public class Main {
    PriorityQueue&amp;lt;int[]&amp;gt; Empty_Position_Q;
    LinkedList&amp;lt;Integer&amp;gt; Car_Waiting_Q;
    int m[][];
    int cost[];
    int weight[];
    int info[];
    int parkIndex[];
    int size;
    int ans;
    BufferedWriter bw;
    public static void main(String args[]) throws IOException {
        Main m = new Main();
        m.solution();
    }
    public void solution() throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        bw = new BufferedWriter(new OutputStreamWriter(System.out));
        String str = br.readLine();

        int N = Integer.parseInt(str.split(&quot; &quot;)[0]);
        int M = Integer.parseInt(str.split(&quot; &quot;)[1]);

        cost = new int[N+1];
        weight = new int[M+1];
        info = new int[2*M];
        parkIndex = new int[M+1];
        ans = 0;
        size = 0 ;

        for(int i =0 ; i&amp;lt; N;i++) {
            cost[i] = Integer.parseInt(br.readLine());
        }
        for(int i =1 ; i&amp;lt;= M;i++) {
            weight[i] = Integer.parseInt(br.readLine());
        }
        for(int i =0 ; i&amp;lt; 2*M;i++) {
            info[i] = Integer.parseInt(br.readLine());
        }

        Empty_Position_Q = new PriorityQueue&amp;lt;&amp;gt;((a,b)-&amp;gt;a[0]-b[0]);
        Car_Waiting_Q = new LinkedList&amp;lt;&amp;gt;();

        for(int i =0 ;i &amp;lt; N;i++){
            Empty_Position_Q.offer(new int[]{i,cost[i]});
        }
        int t;
        int idx;
        int c[];
        int temp = 0;
        for(int i =0 ;i &amp;lt; 2*M; i++){
            if(info[i] &amp;gt; 0){ //1
                if(!Car_Waiting_Q.isEmpty() ||Empty_Position_Q.isEmpty()){//1-1
                    Car_Waiting_Q.offer(info[i]);//1-1-1
                }else{//1-1-2
                    c = Empty_Position_Q.poll();
                    parkIndex[info[i]] = c[0];
                }
            }else{//2
                t = info[i] * (-1);
                idx = parkIndex[t];
                parkIndex[t] = 0;
                Empty_Position_Q.offer(new int[]{idx, cost[idx]});
                ans += cost[idx] * weight[t];//2-1
                if(!Car_Waiting_Q.isEmpty()){//2-2
                    c = Empty_Position_Q.poll();
                    parkIndex[Car_Waiting_Q.poll()] = c[0];
                }
            }
        }

        bw.write(Integer.toString(ans));
        bw.close();
    }

}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘/백준</category>
      <category>백준</category>
      <category>자바 5464</category>
      <author>24시간이모자란</author>
      <guid isPermaLink="true">https://0713k.tistory.com/105</guid>
      <comments>https://0713k.tistory.com/105#entry105comment</comments>
      <pubDate>Tue, 27 Jun 2023 01:12:49 +0900</pubDate>
    </item>
    <item>
      <title>[Java] 백준 1992. 쿼드트리</title>
      <link>https://0713k.tistory.com/104</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1992&quot;&gt;1992번: 쿼드트리 (acmicpc.net)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1687784745342&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;1992번: 쿼드트리&quot; data-og-description=&quot;첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 &amp;le; N &amp;le; 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1992&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1992&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dciFiY/hyS8xP87p4/SfzXlRPhdk6S9HqLRfbVTk/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1992&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1992&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dciFiY/hyS8xP87p4/SfzXlRPhdk6S9HqLRfbVTk/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;1992번: 쿼드트리&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 &amp;le; N &amp;le; 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;풀이 알고리즘은 다음과 같다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;주어진 크기 N에서 2중for 탐색으로 배열을 모두 1 인지 0 인지 검사를 한다.&lt;/li&gt;
&lt;li&gt;모두 1이거나 0 이면 1 또는 0 을 출력한다.&lt;/li&gt;
&lt;li&gt;그렇지 않으면, 재귀 탐색으로 subarray를 탐색을 구현한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;코드&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1687784777320&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.io.*;
import java.util.*;

public class Main {
    int m[][];
    int ans;
    int theta;
    BufferedWriter bw;
    public static void main(String args[]) throws IOException {
        Main m = new Main();
        m.solution();
    }
    public void solution() throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int N = Integer.parseInt(br.readLine());
        String str;
        m = new int[N][N];
        for(int i = 0; i&amp;lt; N ;i++){
            str = br.readLine();
            for(int j = 0 ;j &amp;lt; N ;j ++){
                m[i][j] =str.charAt(j) -'0';
            }
        }
        recursiveF(N, 0, 0);
        bw.close();
    }
    public void recursiveF(int N , int x, int y)throws IOException{
        int n = check(x,y,N);
        if(n != -1 ){
            bw.write(Integer.toString(n));
        }else if( N/2 &amp;gt;0){
            bw.write(&quot;(&quot;);
            recursiveF(N/2, x, y);
            recursiveF(N/2, x, y + N/2);
            recursiveF(N/2, x + N/2, y);
            recursiveF(N/2, x+N/2, y+N/2);
            bw.write(&quot;)&quot;);
        }
    }
    public int check(int x, int y, int N){
        int z = 0;
        boolean f = false;
        for(int i = x; i&amp;lt; x + N ;i++){
            if(f)break;
            for (int j = y; j &amp;lt; y + N; j++) {
                if(f)break;
                if(m[i][j] != z){
                    f = true;
                }
            }
        }
        if(!f)return z;
        f = false;
        z = 1;
        for(int i = x; i&amp;lt; x + N ;i++){
            if(f)break;
            for (int j = y; j &amp;lt; y + N; j++) {
                if(f)break;
                if(m[i][j] != z){
                    f = true;
                }
            }
        }
        if(!f)return z;
        return -1;
    }

}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘/백준</category>
      <category>구현</category>
      <category>백준</category>
      <category>자바</category>
      <author>24시간이모자란</author>
      <guid isPermaLink="true">https://0713k.tistory.com/104</guid>
      <comments>https://0713k.tistory.com/104#entry104comment</comments>
      <pubDate>Tue, 27 Jun 2023 01:02:14 +0900</pubDate>
    </item>
    <item>
      <title>[에러] - 인텔리제이 스프링 JSTL 500 에러</title>
      <link>https://0713k.tistory.com/103</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;환경&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 내 컴퓨터의 스프링 환경이다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;스프링 버전 : 3.x.x&lt;/li&gt;
&lt;li&gt;사용IDE :&amp;nbsp; 인텔리제이&amp;nbsp;&lt;/li&gt;
&lt;li&gt;dependency 관리 : 메이븐 maven, pom.xml&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;jsp 태그 라이브러리 인식을 못한다.&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;gcode&quot; style=&quot;background-color: #2b2b2b; color: #a9b7c6;&quot;&gt;&lt;code&gt;&amp;lt;%@ taglib uri=&quot;http://java.sun.com/jstl/core&quot; prefix=&quot;c&quot; %&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1686505240394&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;org.apache.jasper.JasperException: /WEB-INF/views/home/main.jsp (line: [33], column: [4]) According to TLD or attribute directive in tag file, attribute [test] does not accept any expressions
	at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:41) ~[tomcat-embed-jasper-11.0.0-M6.jar:11.0.0-M6]
	...
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-10.1.8.jar:10.1.8]
	at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]

2023-06-12T02:06:49.832+09:00 ERROR 12320 --- [nio-3000-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [/WEB-INF/views/home/main.jsp (line: [33], column: [4]) According to TLD or attribute directive in tag file, attribute [test] does not accept any expressions] with root cause

org.apache.jasper.JasperException: /WEB-INF/views/home/main.jsp (line: [33], column: [4]) According to TLD or attribute directive in tag file, attribute [test] does not accept any expressions
r.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-10.1.8.jar:10.1.8]
	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.8.jar:10.1.8]
 ..
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-10.1.8.jar:10.1.8]
	at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;원인&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스프링 3.x.x 을 사용하는 개발자라면, 다음 두 가지 원인이 있다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&amp;nbsp;잘못된 태그라이브러리 Syntax&lt;/li&gt;
&lt;li&gt;JSTL 관련 의존성 파일이 없어서&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;download.png&quot; data-origin-width=&quot;298&quot; data-origin-height=&quot;169&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKSNMS/btsjkMDCPqh/M7UmqHN9OIDodStcnZgFXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKSNMS/btsjkMDCPqh/M7UmqHN9OIDodStcnZgFXk/img.png&quot; data-alt=&quot;500 에러 답답하네&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKSNMS/btsjkMDCPqh/M7UmqHN9OIDodStcnZgFXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKSNMS%2FbtsjkMDCPqh%2FM7UmqHN9OIDodStcnZgFXk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;298&quot; height=&quot;169&quot; data-filename=&quot;download.png&quot; data-origin-width=&quot;298&quot; data-origin-height=&quot;169&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;500 에러 답답하네&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;해결&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1번 원인&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문제 원인이 1번이라면, 태그 라이브러리 문법을 확인하면 해결된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나의 경우 이렇게 jstl 태그 라이브러리 선언에 문제가 있었다&lt;/p&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background-color: #2b2b2b; color: #a9b7c6;&quot;&gt;&lt;code&gt;&amp;lt;%@ taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jsp/core&quot;%&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음&amp;nbsp;코드로&amp;nbsp;고친다.&amp;nbsp;jstl&amp;nbsp;최신&amp;nbsp;버전에서는&amp;nbsp;이&amp;nbsp;문법으로&amp;nbsp;바뀌었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre style=&quot;background-color: #2b2b2b; color: #a9b7c6;&quot;&gt;&lt;code&gt;&amp;lt;%@ taglib uri=&quot;http://java.sun.com/jsp/jstl/core&quot; prefix=&quot;c&quot; %&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2번 원인&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;maven 기준 다음 세 가지 의존성을 추가한다.&lt;/li&gt;
&lt;li&gt;gradle은 아래 레포지토리 이름이나 밑에 참고 URL을 확인할 것.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;xml&quot; style=&quot;background-color: #2b2b2b; color: #a9b7c6;&quot;&gt;&lt;code&gt;
&amp;lt;dependency&amp;gt;
   &amp;lt;groupId&amp;gt;jakarta.servlet&amp;lt;/groupId&amp;gt;
   &amp;lt;artifactId&amp;gt;jakarta.servlet-api&amp;lt;/artifactId&amp;gt;
   &amp;lt;version&amp;gt;6.0.0&amp;lt;/version&amp;gt;
   &amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
&amp;lt;/dependency&amp;gt;

&amp;lt;dependency&amp;gt;
   &amp;lt;groupId&amp;gt;jakarta.el&amp;lt;/groupId&amp;gt;
   &amp;lt;artifactId&amp;gt;jakarta.el-api&amp;lt;/artifactId&amp;gt;
   &amp;lt;version&amp;gt;5.0.1&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;


&amp;lt;dependency&amp;gt;
   &amp;lt;groupId&amp;gt;jakarta.servlet.jsp.jstl&amp;lt;/groupId&amp;gt;
   &amp;lt;artifactId&amp;gt;jakarta.servlet.jsp.jstl-api&amp;lt;/artifactId&amp;gt;
   &amp;lt;version&amp;gt;3.0.0&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;참고&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.spring.io/spring-framework/reference/web/webmvc-view/mvc-jsp.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.spring.io/spring-framework/reference/web/webmvc-view/mvc-jsp.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1686505384040&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;JSP and JSTL :: Spring Framework&quot; data-og-description=&quot;As of version 2.0, Spring provides a comprehensive set of data binding-aware tags for handling form elements when using JSP and Spring Web MVC. Each tag provides support for the set of attributes of its corresponding HTML tag counterpart, making the tags f&quot; data-og-host=&quot;docs.spring.io&quot; data-og-source-url=&quot;https://docs.spring.io/spring-framework/reference/web/webmvc-view/mvc-jsp.html&quot; data-og-url=&quot;https://docs.spring.io/spring-framework/reference/web/webmvc-view/mvc-jsp.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://docs.spring.io/spring-framework/reference/web/webmvc-view/mvc-jsp.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.spring.io/spring-framework/reference/web/webmvc-view/mvc-jsp.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;JSP and JSTL :: Spring Framework&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;As of version 2.0, Spring provides a comprehensive set of data binding-aware tags for handling form elements when using JSP and Spring Web MVC. Each tag provides support for the set of attributes of its corresponding HTML tag counterpart, making the tags f&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.spring.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세 가지 의존성 URL&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://mvnrepository.com/artifact/jakarta.servlet.jsp/jakarta.servlet.jsp-api/3.1.1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://mvnrepository.com/artifact/jakarta.servlet.jsp/jakarta.servlet.jsp-api/3.1.1&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://mvnrepository.com/artifact/jakarta.el/jakarta.el-api/5.0.1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://mvnrepository.com/artifact/jakarta.el/jakarta.el-api/5.0.1&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api/6.0.0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api/6.0.0&lt;/a&gt;&lt;/p&gt;</description>
      <category>JAVA/spring</category>
      <author>24시간이모자란</author>
      <guid isPermaLink="true">https://0713k.tistory.com/103</guid>
      <comments>https://0713k.tistory.com/103#entry103comment</comments>
      <pubDate>Mon, 12 Jun 2023 02:52:46 +0900</pubDate>
    </item>
  </channel>
</rss>