<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>농부공학자</title>
    <link>https://ticssfm.tistory.com/</link>
    <description>개발 초보</description>
    <language>ko</language>
    <pubDate>Mon, 6 Jul 2026 14:39:42 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>정석이</managingEditor>
    <image>
      <title>농부공학자</title>
      <url>https://tistory1.daumcdn.net/tistory/4189274/attach/227e26aab043452a8c5a9b5e839937b2</url>
      <link>https://ticssfm.tistory.com</link>
    </image>
    <item>
      <title>[Spring] ddl-auto: create 시 생긴 Error executing DDL &amp;quot;alter table 테이블명 drop foreign key FK&amp;quot; via JDBC Statement</title>
      <link>https://ticssfm.tistory.com/219</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1790&quot; data-origin-height=&quot;612&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4WgVk/btslJ1SciZI/KJNPeFwBoKYYW5s84amdr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4WgVk/btslJ1SciZI/KJNPeFwBoKYYW5s84amdr0/img.png&quot; data-alt=&quot;에러&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4WgVk/btslJ1SciZI/KJNPeFwBoKYYW5s84amdr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4WgVk%2FbtslJ1SciZI%2FKJNPeFwBoKYYW5s84amdr0%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;1790&quot; height=&quot;612&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1790&quot; data-origin-height=&quot;612&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;에러&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;에러내용&lt;/span&gt;&lt;/h4&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1687957562536&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL &quot;alter table game_record_tb drop foreign key FKpsy6cevu6srx9d680uig0u6e3&quot; via JDBC Statement
	at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
	at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlString(SchemaDropperImpl.java:387) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
	at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlStrings(SchemaDropperImpl.java:371) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
	at org.hibernate.tool.schema.internal.SchemaDropperImpl.applyConstraintDropping(SchemaDropperImpl.java:341) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
	at org.hibernate.tool.schema.internal.SchemaDropperImpl.dropFromMetadata(SchemaDropperImpl.java:235) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
	at org.hibernate.tool.schema.internal.SchemaDropperImpl.performDrop(SchemaDropperImpl.java:156) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
	at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop(SchemaDropperImpl.java:128) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
	at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop(SchemaDropperImpl.java:114) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
	at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:157) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
	at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:85) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
	at org.hibernate.internal.SessionFactoryImpl.&amp;lt;init&amp;gt;(SessionFactoryImpl.java:335) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
	at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:471) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1498) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
	at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) ~[spring-orm-5.3.25.jar:5.3.25]
	at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) ~[spring-orm-5.3.25.jar:5.3.25]
	at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-5.3.25.jar:5.3.25]
	at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-5.3.25.jar:5.3.25]
	at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) ~[spring-orm-5.3.25.jar:5.3.25]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) ~[spring-beans-5.3.25.jar:5.3.25]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) ~[spring-beans-5.3.25.jar:5.3.25]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.25.jar:5.3.25]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.25.jar:5.3.25]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.25.jar:5.3.25]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.25.jar:5.3.25]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.25.jar:5.3.25]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.25.jar:5.3.25]
	at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1154) ~[spring-context-5.3.25.jar:5.3.25]
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:908) ~[spring-context-5.3.25.jar:5.3.25]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.25.jar:5.3.25]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) ~[spring-boot-2.7.9.jar:2.7.9]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731) ~[spring-boot-2.7.9.jar:2.7.9]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) ~[spring-boot-2.7.9.jar:2.7.9]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) ~[spring-boot-2.7.9.jar:2.7.9]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) ~[spring-boot-2.7.9.jar:2.7.9]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) ~[spring-boot-2.7.9.jar:2.7.9]
	at com.ssafy.tedbear.TedbearApplication.main(TedbearApplication.java:10) ~[main/:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
	at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) ~[spring-boot-devtools-2.7.9.jar:2.7.9]
Caused by: java.sql.SQLSyntaxErrorException: Table 'tedbearDB.game_record_tb' doesn't exist
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) ~[mysql-connector-j-8.0.32.jar:8.0.32]
	at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-j-8.0.32.jar:8.0.32]
	at com.mysql.cj.jdbc.StatementImpl.executeInternal(StatementImpl.java:763) ~[mysql-connector-j-8.0.32.jar:8.0.32]
	at com.mysql.cj.jdbc.StatementImpl.execute(StatementImpl.java:648) ~[mysql-connector-j-8.0.32.jar:8.0.32]
	at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:94) ~[HikariCP-4.0.3.jar:na]
	at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java) ~[HikariCP-4.0.3.jar:na]
	at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
	... 40 common frames omitted&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&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;h4 data-ke-size=&quot;size20&quot;&gt;발생 이유&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ddl-auto 에서 create 사용 시 기존 테이블 삭제 후 다시 생성한다. (DROP + CREATE)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 우리는 테이블을 만들어놓지 않았어서 DROP할 테이블이 없었음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 삭제할 FK가 없다고 생긴 에러이다.&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;h4 data-ke-size=&quot;size20&quot;&gt;해결법&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;create -&amp;gt; update로 변경!&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로젝트/에러모음</category>
      <category>alter table table_name drop foreign key FK</category>
      <category>alter table 테이블명 drop foreign key FK</category>
      <category>ddl-auto: create 에러</category>
      <author>정석이</author>
      <guid isPermaLink="true">https://ticssfm.tistory.com/219</guid>
      <comments>https://ticssfm.tistory.com/219#entry219comment</comments>
      <pubDate>Wed, 28 Jun 2023 22:04:47 +0900</pubDate>
    </item>
    <item>
      <title>[Refactoring] 프로젝트 리팩토링 계획</title>
      <link>https://ticssfm.tistory.com/218</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;564&quot; data-origin-height=&quot;667&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VtpIC/btsluVSilpg/LKjrRf24FzLl8NKpDKCL20/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VtpIC/btsluVSilpg/LKjrRf24FzLl8NKpDKCL20/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VtpIC/btsluVSilpg/LKjrRf24FzLl8NKpDKCL20/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVtpIC%2FbtsluVSilpg%2FLKjrRf24FzLl8NKpDKCL20%2Fimg.jpg&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;564&quot; height=&quot;667&quot; data-origin-width=&quot;564&quot; data-origin-height=&quot;667&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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;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;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;- fetch join 써서 해결했던 N+1 문제 batch size 설정이랑 @EntityGraph 다시 써보고 성능 체크해서 정리하기!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- TEDBEAR 프로젝트 검색부분 index 걸기 전,후 비교 다시 해보고 포스팅하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 리폼 플랫폼 검색부분도 다시 보기!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 리폼 플랫폼 for문 쓰던 코드들 stream으로 변경하기&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;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;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;&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;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>
      <category>리팩토링</category>
      <category>리팩토링 계획</category>
      <category>백엔드 리팩토링</category>
      <category>프로젝트 리팩토링</category>
      <category>프로젝트 리팩토링 계획</category>
      <author>정석이</author>
      <guid isPermaLink="true">https://ticssfm.tistory.com/218</guid>
      <comments>https://ticssfm.tistory.com/218#entry218comment</comments>
      <pubDate>Tue, 27 Jun 2023 14:33:18 +0900</pubDate>
    </item>
    <item>
      <title>[BaekJoon] 백준 2493번 _ 탑 for JAVA</title>
      <link>https://ticssfm.tistory.com/217</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2493&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/2493&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1687433316337&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;2493번: 탑&quot; data-og-description=&quot;첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 &quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2493&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2493&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/TtgU4/hyS4qeca8I/Yb1tsNgEvTqkzk2luaBli1/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/2493&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2493&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/TtgU4/hyS4qeca8I/Yb1tsNgEvTqkzk2luaBli1/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;2493번: 탑&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2378&quot; data-origin-height=&quot;1430&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bR75qy/btskZsiKm3T/Y1h9glNBTaj7Tqp2nUKkyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bR75qy/btskZsiKm3T/Y1h9glNBTaj7Tqp2nUKkyk/img.png&quot; data-alt=&quot;문제&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bR75qy/btskZsiKm3T/Y1h9glNBTaj7Tqp2nUKkyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbR75qy%2FbtskZsiKm3T%2FY1h9glNBTaj7Tqp2nUKkyk%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;2378&quot; height=&quot;1430&quot; data-origin-width=&quot;2378&quot; data-origin-height=&quot;1430&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;문제&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&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;6 9 5 7 4 의 높이를 가진 탑일 때&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;4의 높이에서 레이저를 쏜다면 7에, 7의 높이에서 레이저를 쏜다면 9에 맞을 것이다.&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;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;여기서 알아야 할 것은 6 다음에 9를 스택에 넣었을 때, 다음 건물들은 6에 레이저를 절대 맞출 수 없다는 것이다.&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;그래서 스택에 첫 번째 건물부터 넣으면서 stack의 제일 위 건물의 높이가 현재 건물의 높이보다 작다면 pop 해주면 된다.&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;모두 pop 해주고 남은 건물에 레이저가 닿게 될 것이므로, 해당 건물의 순서를 담아주면 된다.&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;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;그래서 건물의 높이와 건물의 순서(몇 번째 건물인지)를 stack에 int[]로 넣어주었다~!&lt;/span&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;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;코드&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1687433589228&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		StringBuilder sb = new StringBuilder();
		Stack&amp;lt;int[]&amp;gt; stack = new Stack&amp;lt;&amp;gt;(); // 건물의 높이, 건물의 순서
		
		for(int i=1; i&amp;lt;=N; i++) {
			int in = Integer.parseInt(st.nextToken());
			
			while(!stack.isEmpty() &amp;amp;&amp;amp; stack.peek()[0] &amp;lt; in) {
				stack.pop();
			}
			
			if(stack.isEmpty()) {
				sb.append(&quot;0&quot;).append(&quot; &quot;);
			} else {
				sb.append(stack.peek()[1]).append(&quot; &quot;);
			}
			stack.add(new int[] {in, i});
		}
		
		System.out.println(sb.toString());
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2300&quot; data-origin-height=&quot;156&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbZ9WF/btskZGHNV4N/drX1AeIS70ItgvMKtZieKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbZ9WF/btskZGHNV4N/drX1AeIS70ItgvMKtZieKk/img.png&quot; data-alt=&quot;성능&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbZ9WF/btskZGHNV4N/drX1AeIS70ItgvMKtZieKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbZ9WF%2FbtskZGHNV4N%2FdrX1AeIS70ItgvMKtZieKk%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;2300&quot; height=&quot;156&quot; data-origin-width=&quot;2300&quot; data-origin-height=&quot;156&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;성능&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;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>
      <category>2493 java</category>
      <category>2493 자바</category>
      <category>백준 2493</category>
      <category>백준 2493 자바</category>
      <category>백준 탑</category>
      <category>백준 탑 java</category>
      <category>백준 탑 자바</category>
      <author>정석이</author>
      <guid isPermaLink="true">https://ticssfm.tistory.com/217</guid>
      <comments>https://ticssfm.tistory.com/217#entry217comment</comments>
      <pubDate>Thu, 22 Jun 2023 20:34:24 +0900</pubDate>
    </item>
    <item>
      <title>[BaekJoon] 백준 16953번 _ A&amp;rarr;B for JAVA</title>
      <link>https://ticssfm.tistory.com/216</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/16953&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/16953&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1687350624834&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;16953번: A &amp;rarr; B&quot; data-og-description=&quot;첫째 줄에 A, B (1 &amp;le; A &amp;lt; B &amp;le; 109)가 주어진다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/16953&quot; data-og-url=&quot;https://www.acmicpc.net/problem/16953&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ds9nRo/hyS4p6S43u/wcCUKd4A5YuT8PSrUikYpk/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/16953&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/16953&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ds9nRo/hyS4p6S43u/wcCUKd4A5YuT8PSrUikYpk/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;16953번: A &amp;rarr; B&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 A, B (1 &amp;le; A &amp;lt; B &amp;le; 109)가 주어진다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2382&quot; data-origin-height=&quot;1204&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOVBZR/btskTGtkQbA/NYEsoHc1LW6LAAtn3C3q2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOVBZR/btskTGtkQbA/NYEsoHc1LW6LAAtn3C3q2K/img.png&quot; data-alt=&quot;문제&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOVBZR/btskTGtkQbA/NYEsoHc1LW6LAAtn3C3q2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOVBZR%2FbtskTGtkQbA%2FNYEsoHc1LW6LAAtn3C3q2K%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;2382&quot; height=&quot;1204&quot; data-origin-width=&quot;2382&quot; data-origin-height=&quot;1204&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;문제&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&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;어차피 B보다 값이 커지면 멈출거고, A=2, B=10^9이어도 최솟값이 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;B보다 커지면 Queue에 안넣을거라서 int값으로 했는데 long값으로 해줘야했다. 흠&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;pre id=&quot;code_1687350784701&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.io.*;
import java.util.*;

public class Main {
	static class Node implements Comparable&amp;lt;Node&amp;gt;{
		long value, cnt;
		
		public Node(long value, long cnt) {
			this.value = value;
			this.cnt = cnt;
		}

		@Override
		public int compareTo(Node o) {
			return (int) (this.cnt - o.cnt);
		}
	}
	
	public static void main(String[] args) throws Exception {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		int A = Integer.parseInt(st.nextToken());
		int B = Integer.parseInt(st.nextToken());
		
		if(A==B) { // 아예 같으면 0
			System.out.println(&quot;0&quot;);
			return;
		}
		
		PriorityQueue&amp;lt;Node&amp;gt; queue = new PriorityQueue&amp;lt;&amp;gt;();
		queue.offer(new Node(A, 1));
		
		while(!queue.isEmpty()) {
			Node out = queue.poll();
			if(out.value == B) {
				System.out.println(out.cnt);
				return;
			}
			if(out.value * 2 &amp;lt;= B &amp;amp;&amp;amp; out.value*2 &amp;gt;= 0) { // 값이 너무 커져서 -값이 될까봐 &amp;gt;=0 조건을 넣어줬음
				queue.offer(new Node(out.value * 2, out.cnt+1));
			}
			if(out.value*10+1 &amp;lt;= B &amp;amp;&amp;amp; out.value*10+1 &amp;gt;= 0) {
				queue.offer(new Node(out.value*10+1, out.cnt+1));
			}
		}
		
		System.out.println(&quot;-1&quot;);
		
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2312&quot; data-origin-height=&quot;162&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/H86FJ/btskRbabzwz/Xz3pLEmSM02MhyFOmJtLK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/H86FJ/btskRbabzwz/Xz3pLEmSM02MhyFOmJtLK0/img.png&quot; data-alt=&quot;성능&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/H86FJ/btskRbabzwz/Xz3pLEmSM02MhyFOmJtLK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FH86FJ%2FbtskRbabzwz%2FXz3pLEmSM02MhyFOmJtLK0%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;2312&quot; height=&quot;162&quot; data-origin-width=&quot;2312&quot; data-origin-height=&quot;162&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;성능&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;class 이름을 Node라고 했는데.. 사실 노드는 아니긴 하다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>알고리즘/백준</category>
      <category>16953 java</category>
      <category>16953 그리디</category>
      <category>16953 그리디 알고리즘</category>
      <category>16953 자바</category>
      <category>16953 자바풀이</category>
      <category>백준 16953</category>
      <category>백준 16953 java</category>
      <category>백준 16953 자바</category>
      <author>정석이</author>
      <guid isPermaLink="true">https://ticssfm.tistory.com/216</guid>
      <comments>https://ticssfm.tistory.com/216#entry216comment</comments>
      <pubDate>Wed, 21 Jun 2023 21:35:44 +0900</pubDate>
    </item>
    <item>
      <title>[BaekJoon] 백준 11057번 _ 오르막 수 for JAVA</title>
      <link>https://ticssfm.tistory.com/215</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/11057&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/11057&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1686745369275&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;11057번: 오르막 수&quot; data-og-description=&quot;오르막 수는 수의 자리가 오름차순을&amp;nbsp;이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/11057&quot; data-og-url=&quot;https://www.acmicpc.net/problem/11057&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/EV8YR/hyS0lP0UvK/kSirYZQAlmKPka1X7NZTR0/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/11057&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/11057&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/EV8YR/hyS0lP0UvK/kSirYZQAlmKPka1X7NZTR0/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;11057번: 오르막 수&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;오르막 수는 수의 자리가 오름차순을&amp;nbsp;이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1458&quot; data-origin-height=&quot;836&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kDD9x/btsjYdzT7L3/3v1HwZW4FbnKSRuOj5WZN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kDD9x/btsjYdzT7L3/3v1HwZW4FbnKSRuOj5WZN1/img.png&quot; data-alt=&quot;문제&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kDD9x/btsjYdzT7L3/3v1HwZW4FbnKSRuOj5WZN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkDD9x%2FbtsjYdzT7L3%2F3v1HwZW4FbnKSRuOj5WZN1%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;1458&quot; height=&quot;836&quot; data-origin-width=&quot;1458&quot; data-origin-height=&quot;836&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;문제&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;dp문제이다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;213&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vwyga/btsjXUUVrMG/jYkuguYw6kyo8aKC1Maeq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vwyga/btsjXUUVrMG/jYkuguYw6kyo8aKC1Maeq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vwyga/btsjXUUVrMG/jYkuguYw6kyo8aKC1Maeq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fvwyga%2FbtsjXUUVrMG%2FjYkuguYw6kyo8aKC1Maeq0%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;788&quot; height=&quot;213&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;213&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;이렇게 그려봤다.&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;열에 있는 0~9까지의 숫자가 각 자리수(행 번호)에 들어갔을 때 나올 수 있는 경우의 수 이다.&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;예를 들어 행이 2, 열이 0인 수는&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;20, 21, 22, 23, 24, 25, 26, 27, 28, 29&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;이렇게 10개가 된다.&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;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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1119&quot; data-origin-height=&quot;278&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cAxEkv/btsjYM2SiRH/j7VrLkOWbpbuKr0UEffRw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cAxEkv/btsjYM2SiRH/j7VrLkOWbpbuKr0UEffRw1/img.png&quot; data-alt=&quot;노랑 + 노랑 = 핑크&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cAxEkv/btsjYM2SiRH/j7VrLkOWbpbuKr0UEffRw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAxEkv%2FbtsjYM2SiRH%2Fj7VrLkOWbpbuKr0UEffRw1%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;1119&quot; height=&quot;278&quot; data-origin-width=&quot;1119&quot; data-origin-height=&quot;278&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;노랑 + 노랑 = 핑크&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노랑 + 노랑 = 핑크&lt;/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;&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;pre id=&quot;code_1686745946854&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.io.*;

public class Main {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		
		int[][] dp = new int[N+1][10];
		for(int i=1; i&amp;lt;=N; i++)
			dp[i][9] = 1;
		
		for(int i=1; i&amp;lt;=N; i++) {
			for(int j=8; j&amp;gt;=0; j--) {
				dp[i][j] = (dp[i][j+1] + dp[i-1][j]) % 10007;
			}
		}
		
		int answer = 0;
		for(int i=0; i&amp;lt;=9; i++)
			answer = (answer+dp[N][i])% 10007;
		
		System.out.println(answer);
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1436&quot; data-origin-height=&quot;98&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TjZFh/btsj08Ynjkz/3KnunL8dADk0O5rn8ehES0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TjZFh/btsj08Ynjkz/3KnunL8dADk0O5rn8ehES0/img.png&quot; data-alt=&quot;성능&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TjZFh/btsj08Ynjkz/3KnunL8dADk0O5rn8ehES0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTjZFh%2Fbtsj08Ynjkz%2F3KnunL8dADk0O5rn8ehES0%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;1436&quot; height=&quot;98&quot; data-origin-width=&quot;1436&quot; data-origin-height=&quot;98&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;성능&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;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>
      <category>11057 dp</category>
      <category>11057 java</category>
      <category>11057 자바</category>
      <category>백준 11057 dp</category>
      <category>백준 11057 java</category>
      <category>백준 11057 자바</category>
      <category>오르막 수 자바</category>
      <category>오르막수 java</category>
      <category>오르막수 자바</category>
      <author>정석이</author>
      <guid isPermaLink="true">https://ticssfm.tistory.com/215</guid>
      <comments>https://ticssfm.tistory.com/215#entry215comment</comments>
      <pubDate>Wed, 14 Jun 2023 21:33:58 +0900</pubDate>
    </item>
    <item>
      <title>[BackJoon] 백준 9465번 _ 스티커 for JAVA</title>
      <link>https://ticssfm.tistory.com/214</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/9465&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/9465&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1686661051651&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;9465번: 스티커&quot; data-og-description=&quot;첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 n (1 &amp;le; n &amp;le; 100,000)이 주어진다. 다음 두 줄에는 n개의 정수가 주어지며, 각 정수는 그 위치에 해당하는 스티커의 &quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/9465&quot; data-og-url=&quot;https://www.acmicpc.net/problem/9465&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/QlG6P/hySYIk82L7/oQHMKKmg6960IB91f7q0kK/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/9465&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/9465&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/QlG6P/hySYIk82L7/oQHMKKmg6960IB91f7q0kK/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;9465번: 스티커&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 n (1 &amp;le; n &amp;le; 100,000)이 주어진다. 다음 두 줄에는 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;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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1177&quot; data-origin-height=&quot;765&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XjAqi/btsjRmv4ETL/bzBpqxmbjnum6wAqIlJtg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XjAqi/btsjRmv4ETL/bzBpqxmbjnum6wAqIlJtg0/img.png&quot; data-alt=&quot;문제&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XjAqi/btsjRmv4ETL/bzBpqxmbjnum6wAqIlJtg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXjAqi%2FbtsjRmv4ETL%2FbzBpqxmbjnum6wAqIlJtg0%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;1177&quot; height=&quot;765&quot; data-origin-width=&quot;1177&quot; data-origin-height=&quot;765&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;문제&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&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;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;그런데 n값이 10만까지인데 재귀를 빠져나올 조건이 딱히 안보였음.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;실컷 보다가 dp같아서 다른사람 풀이 참고했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;풀이&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;예를 들어&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;434&quot; data-origin-height=&quot;184&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sL2y2/btsjPHtWVkw/0Ggq2d48alg5TVwA0TikG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sL2y2/btsjPHtWVkw/0Ggq2d48alg5TVwA0TikG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sL2y2/btsjPHtWVkw/0Ggq2d48alg5TVwA0TikG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsL2y2%2FbtsjPHtWVkw%2F0Ggq2d48alg5TVwA0TikG0%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;434&quot; height=&quot;184&quot; data-origin-width=&quot;434&quot; data-origin-height=&quot;184&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저기에 있는 50은 무조건 스티커를 뜯는다고 하자.&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;465&quot; data-origin-height=&quot;205&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PVhks/btsjQgCSXkY/2EwCAQB19RB0w7QisYjW3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PVhks/btsjQgCSXkY/2EwCAQB19RB0w7QisYjW3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PVhks/btsjQgCSXkY/2EwCAQB19RB0w7QisYjW3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPVhks%2FbtsjQgCSXkY%2F2EwCAQB19RB0w7QisYjW3K%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;465&quot; height=&quot;205&quot; data-origin-width=&quot;465&quot; data-origin-height=&quot;205&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;size18&quot;&gt;저 파란색인 50과 70을 뜯었을 때 최대가 되도록 해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;노란색의 오른쪽 10과 아래 30은 못 뜯는게 자명한데, 저 파란색 두 군데만 신경쓰는 이유는&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;100같은 경우 노란색에서 바로 100을 뜯는 것 보다 50 -&amp;gt; 파란색 50 -&amp;gt; 100을 뜯는게 더 효율적이기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;495&quot; data-origin-height=&quot;204&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dXcLVo/btsjPsYaWWq/no1MMD9jaS7jF3FgWl4oo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dXcLVo/btsjPsYaWWq/no1MMD9jaS7jF3FgWl4oo0/img.png&quot; data-alt=&quot;이렇게!&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dXcLVo/btsjPsYaWWq/no1MMD9jaS7jF3FgWl4oo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdXcLVo%2FbtsjPsYaWWq%2Fno1MMD9jaS7jF3FgWl4oo0%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;495&quot; height=&quot;204&quot; data-origin-width=&quot;495&quot; data-origin-height=&quot;204&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이렇게!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;그래서 대각선 50과 그 옆 70 중에서 큰 값을 선택하면서 그 자리에서 최선의 선택을 하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;이를 코드로 나타낼 때에는 현재 선택된 자리는 무조건 뜯는다고 가정하고, 이전에 무엇을 뜯었어야 가장 큰 값이 나오는지 확인하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;긍까&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;564&quot; data-origin-height=&quot;232&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOsL0w/btsjRhVRWlw/9Y2Vm8cqDTasayeGCGqpLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOsL0w/btsjRhVRWlw/9Y2Vm8cqDTasayeGCGqpLK/img.png&quot; data-alt=&quot;이전꺼 확인&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOsL0w/btsjRhVRWlw/9Y2Vm8cqDTasayeGCGqpLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOsL0w%2FbtsjRhVRWlw%2F9Y2Vm8cqDTasayeGCGqpLK%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;500&quot; height=&quot;206&quot; data-origin-width=&quot;564&quot; data-origin-height=&quot;232&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이전꺼 확인&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;이렇게 이전 대각선꺼를 확인해서 최적의 선택(둘 중 큰 값 선택)을 하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;코드&lt;/p&gt;
&lt;pre id=&quot;code_1686661829860&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.io.*;

public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		int T = Integer.parseInt(br.readLine());
		StringBuilder sb = new StringBuilder();
		
		for(int tc=1; tc&amp;lt;=T; tc++) {
			int n = Integer.parseInt(br.readLine());
			int[][] score = new int[2][n+1];
			
			for(int i=0; i&amp;lt;2; i++) {
				st = new StringTokenizer(br.readLine());
				for(int j=1; j&amp;lt;=n; j++) {
					score[i][j] = Integer.parseInt(st.nextToken());
				}
			}
			/* */
			int[][] dp = new int[2][n+1];
			dp[0][1] = score[0][1]; // [0][0] = 0이므로, 스티커는 1부터 표시한다.
			dp[1][1] = score[1][1];
			
			for(int i=2; i&amp;lt;=n; i++) {
				dp[0][i] = Math.max(dp[1][i-2], dp[1][i-1]) + score[0][i];
				dp[1][i] = Math.max(dp[0][i-2], dp[0][i-1]) + score[1][i];
			}
			
			sb.append(Math.max(dp[0][n], dp[1][n])).append('\n');
		}	
		System.out.println(sb.toString());
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1149&quot; data-origin-height=&quot;78&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ssQYc/btsjTvF4Ddf/UGHf12Mhdk0qmkyJlI3eEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ssQYc/btsjTvF4Ddf/UGHf12Mhdk0qmkyJlI3eEk/img.png&quot; data-alt=&quot;성능&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ssQYc/btsjTvF4Ddf/UGHf12Mhdk0qmkyJlI3eEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FssQYc%2FbtsjTvF4Ddf%2FUGHf12Mhdk0qmkyJlI3eEk%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;1149&quot; height=&quot;78&quot; data-origin-width=&quot;1149&quot; data-origin-height=&quot;78&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;성능&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;아~ dp 어렵다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;근데 이해하니까 재밌는듯.... 꼭 다시 풀어봐야지&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;dp를 부숴볼까......&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;&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;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>
      <category>9465 dp</category>
      <category>9465 java</category>
      <category>9465 백트래킹</category>
      <category>9465 자바</category>
      <category>백준 9465</category>
      <category>백준 9465 java</category>
      <category>백준 9465 자바</category>
      <category>백준 스티커</category>
      <category>스티커 java</category>
      <category>스티커 자바</category>
      <author>정석이</author>
      <guid isPermaLink="true">https://ticssfm.tistory.com/214</guid>
      <comments>https://ticssfm.tistory.com/214#entry214comment</comments>
      <pubDate>Tue, 13 Jun 2023 22:15:40 +0900</pubDate>
    </item>
    <item>
      <title>[BaekJoon] 백준 1918번 _ 후위 표기식 for JAVA</title>
      <link>https://ticssfm.tistory.com/213</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1918&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/1918&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1172&quot; data-origin-height=&quot;864&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bilLEG/btsi0YK8ulg/yX6JPz9beHSIlnJkWirgm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bilLEG/btsi0YK8ulg/yX6JPz9beHSIlnJkWirgm1/img.png&quot; data-alt=&quot;문제&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bilLEG/btsi0YK8ulg/yX6JPz9beHSIlnJkWirgm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbilLEG%2Fbtsi0YK8ulg%2FyX6JPz9beHSIlnJkWirgm1%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;1172&quot; height=&quot;864&quot; data-origin-width=&quot;1172&quot; data-origin-height=&quot;864&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;문제&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&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;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;처음에는 괄호를 치고 계산하려고 했는데 괄호 치는 과정이 너무 어려워서 관둠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;일단 '(' 가 나오면 ')' 가 나와야하는게 자명함&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;그리고 ')'가 나오면 '('가 나올 때까지 어딘가에 저장해둔 연산자를 빼야하는것도 자명하다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;그럼 이걸 1. 어딘가에 저장해야하고 2. 연산자를 어떻게 빼서 가져올지&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;고민하면 될 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;물론 저도 틀렸음ㅎㅎㅋㅋㅋ&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;코드&lt;/p&gt;
&lt;pre id=&quot;code_1686145535830&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.io.*;

public class Main {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		char[] expression = br.readLine().toCharArray();
		
		StringBuilder sb = new StringBuilder();
		Stack&amp;lt;Character&amp;gt; stack = new Stack&amp;lt;&amp;gt;();
		for(int i=0; i&amp;lt;expression.length; i++) {
			char now = expression[i];
            
           	 	// A~Z값이 나오면 바로 append() 한다.
			if(now &amp;gt;= 'A' &amp;amp;&amp;amp; now &amp;lt;= 'Z') {
				sb.append(now);
			} 
            
			else if(now == '(') {
				stack.add(now);
			} else if(now == ')') { // ')'가 나오면 '('가 나올 때까지 연산자 append()
				while(stack.peek() != '(') {
					sb.append(stack.pop());
				}
				stack.pop(); // '(' 도 pop()
			}
			// 연산자일 때
			else {
            			// 스택 제일 바깥에 있는 연산자가 현재 연산자보다 우선순위가 높거나 같으면 append()
				while(!stack.isEmpty() &amp;amp;&amp;amp; num(stack.peek()) &amp;gt;= num(now)) {
					sb.append(stack.pop());
				}
				stack.add(now);
			}
		}
        	// 나머지 애들 append()
		while(!stack.isEmpty()) {
			sb.append(stack.pop());
		}
		
		System.out.println(sb.toString());

	}
	private static int num(char op) {
		switch (op) {
		case '+':
			return 1;
		case '-':
			return 1;
		case '*':
			return 2;
		case '/':
			return 2;
		default:
			return -1;
		}
	}
}&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;
&lt;p data-ke-size=&quot;size18&quot;&gt;백준이 갑자기 안돼서 성능을 못보여드리네용..?&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;아무튼 어려운 문제였다. 문제 푸는연습 계속 해야지...!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>알고리즘/백준</category>
      <category>1918 java</category>
      <category>1918 자바</category>
      <category>백준</category>
      <category>백준 1918</category>
      <category>백준 1918 java</category>
      <category>백준 1918 자바</category>
      <category>백준 1918 후위표기식</category>
      <category>후위 표기식 java</category>
      <category>후위 표기식 자바</category>
      <author>정석이</author>
      <guid isPermaLink="true">https://ticssfm.tistory.com/213</guid>
      <comments>https://ticssfm.tistory.com/213#entry213comment</comments>
      <pubDate>Wed, 7 Jun 2023 22:47:32 +0900</pubDate>
    </item>
    <item>
      <title>[BaekJoon] 백준 1764번 _ 듣보잡 for JAVA</title>
      <link>https://ticssfm.tistory.com/212</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1764&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/1764&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1686057325611&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;1764번: 듣보잡&quot; data-og-description=&quot;첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. &quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1764&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1764&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/PZ8kg/hySTSHjGUj/7GwBUmcPiqfWZWVYXmH5hK/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/1764&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1764&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/PZ8kg/hySTSHjGUj/7GwBUmcPiqfWZWVYXmH5hK/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;1764번: 듣보잡&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다.&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;&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;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1283&quot; data-origin-height=&quot;727&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKsUu1/btsiO4RwoWH/fiBynGRWMtzpRfnItHsI4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKsUu1/btsiO4RwoWH/fiBynGRWMtzpRfnItHsI4K/img.png&quot; data-alt=&quot;문제&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKsUu1/btsiO4RwoWH/fiBynGRWMtzpRfnItHsI4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKsUu1%2FbtsiO4RwoWH%2FfiBynGRWMtzpRfnItHsI4K%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;1283&quot; height=&quot;727&quot; data-origin-width=&quot;1283&quot; data-origin-height=&quot;727&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;문제&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;N값만큼 입력받은 애들이 M값만큼 안에 contain하는지 확인하면 되므로 HashSet 사용했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;몇 개가 듣보일지 모르므로 ArrayList 사용함&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;그리고 사전순 정렬해줬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;p data-ke-size=&quot;size18&quot;&gt;코드&lt;/p&gt;
&lt;pre id=&quot;code_1686057434911&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.io.*;

public class Main {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int N = Integer.parseInt(st.nextToken());
		int M = Integer.parseInt(st.nextToken());
		
		HashSet&amp;lt;String&amp;gt; set = new HashSet&amp;lt;&amp;gt;();
		for(int i=0; i&amp;lt;N; i++) {
			set.add(br.readLine());
		}
		
		ArrayList&amp;lt;String&amp;gt; list = new ArrayList&amp;lt;&amp;gt;();
		for(int i=0; i&amp;lt;M; i++) {
			String in = br.readLine();
			if(set.contains(in)) list.add(in);
		}
		Collections.sort(list); // 사전순 정렬
		
		StringBuilder sb = new StringBuilder();
		sb.append(list.size()).append('\n');
		for(int i=0; i&amp;lt;list.size(); i++) {
			sb.append(list.get(i)).append('\n');
		}
		
		System.out.println(sb.toString());

	}

}&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1263&quot; data-origin-height=&quot;87&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c6Xo7i/btsiPia1kxO/BkCdrksVjln7KkOqcDGwK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c6Xo7i/btsiPia1kxO/BkCdrksVjln7KkOqcDGwK1/img.png&quot; data-alt=&quot;성능&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c6Xo7i/btsiPia1kxO/BkCdrksVjln7KkOqcDGwK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc6Xo7i%2FbtsiPia1kxO%2FBkCdrksVjln7KkOqcDGwK1%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;1263&quot; height=&quot;87&quot; data-origin-width=&quot;1263&quot; data-origin-height=&quot;87&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;성능&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&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;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>알고리즘/백준</category>
      <category>1764 java</category>
      <category>1764 자바</category>
      <category>듣보잡 java</category>
      <category>듣보잡 자바</category>
      <category>백준 1764</category>
      <category>백준 1764 java</category>
      <category>백준 1764 자바</category>
      <author>정석이</author>
      <guid isPermaLink="true">https://ticssfm.tistory.com/212</guid>
      <comments>https://ticssfm.tistory.com/212#entry212comment</comments>
      <pubDate>Tue, 6 Jun 2023 22:20:28 +0900</pubDate>
    </item>
    <item>
      <title>[BaekJoon] 백준 2607번 _ 비슷한 단어 for JAVA</title>
      <link>https://ticssfm.tistory.com/211</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2607&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/2607&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1685974005449&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;2607번: 비슷한 단어&quot; data-og-description=&quot;첫째 줄에는 단어의 개수가 주어지고 둘째 줄부터는 한 줄에 하나씩 단어가 주어진다. 모든 단어는 영문 알파벳 대문자로 이루어져 있다. 단어의 개수는 100개 이하이며, 각 단어의 길이는 10 이&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2607&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2607&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/boHbSZ/hySRShBPa9/ekmOiHqBCY40PXRrrHlyC1/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/2607&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2607&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/boHbSZ/hySRShBPa9/ekmOiHqBCY40PXRrrHlyC1/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;2607번: 비슷한 단어&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에는 단어의 개수가 주어지고 둘째 줄부터는 한 줄에 하나씩 단어가 주어진다. 모든 단어는 영문 알파벳 대문자로 이루어져 있다. 단어의 개수는 100개 이하이며, 각 단어의 길이는 10 이&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1290&quot; data-origin-height=&quot;750&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/S4Iof/btsiOJTQb1F/dbiJPEB6SszAUIdyppQpJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/S4Iof/btsiOJTQb1F/dbiJPEB6SszAUIdyppQpJk/img.png&quot; data-alt=&quot;문제&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/S4Iof/btsiOJTQb1F/dbiJPEB6SszAUIdyppQpJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FS4Iof%2FbtsiOJTQb1F%2FdbiJPEB6SszAUIdyppQpJk%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;800&quot; height=&quot;465&quot; data-origin-width=&quot;1290&quot; data-origin-height=&quot;750&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;문제&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;내가 푼 방법은 원본 DOG를 HashMap에 &amp;lt;알파벳, 알파벳개수&amp;gt; 로 넣어놓고&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;다른 문자열을 비교할 때마다 clone해서 사용하는 방법이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;비교 단어가 최대 100개이고 단어 길이도 최대 10이라서 가능함!&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;주의할 점은 비교 문자열의 알파벳을 원본 문자열 알파벳에서 개수를 빼주고&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;원본 문자열에 남은 문자열이 있는지도 체크해줘야함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;조건&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;하나의 문자를&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;1. 더하거나&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;2. 빼거나&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;3. 바꾼다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;체크 잘하기!&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;코드&lt;/p&gt;
&lt;pre id=&quot;code_1685974173416&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.io.*;

public class Main {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int T = Integer.parseInt(br.readLine());
		String original = br.readLine();
		HashMap&amp;lt;Character, Integer&amp;gt; originalMap = new HashMap&amp;lt;&amp;gt;();
		for(int i=0; i&amp;lt;original.length(); i++) {
			char key = original.charAt(i);
			int value = originalMap.getOrDefault(key, 0);
			originalMap.put(key, value+1);
		}
		
		int answer = 0;
		for(int i=0; i&amp;lt;T-1; i++) {
			// original map clone
			HashMap&amp;lt;Character, Integer&amp;gt; compareMap = new HashMap&amp;lt;&amp;gt;();
			for(Character key : originalMap.keySet()) {
				compareMap.put(key, originalMap.get(key));
			}
			
			int cnt = 0; // 현재 알파벳이 원본에 없을 경우 +1
			int cnt2 = 0; // 현재 알파벳을 다 제했는데 원본에는 글자가 남아있을 경우 +1
			
			// check
			// 현재 알파벳을 원본에서 뺀다.
			String checkStr = br.readLine();
			for(int c=0; c&amp;lt;checkStr.length(); c++) {
				char key = checkStr.charAt(c);
				Integer value = compareMap.get(key);
				
				if(value == null || value == 0) {
					cnt += 1;
				} else {
					compareMap.put(key, value-1);
				}
				
				if(cnt &amp;gt; 1) {
					break;
				}
			}
			
			// 원본에 글자가 남아있음 (=두 단어가 같은 구성이 아닌경우)
			for(Character key : compareMap.keySet()) {
				if(compareMap.get(key) &amp;gt;= 1) cnt2+=1;
			}

			// cnt, cnt2가 각각 00,01,10,11인 경우만 정답 가능
			if((cnt+cnt2 &amp;lt;= 1) || cnt==1&amp;amp;&amp;amp;cnt2==1) {
				answer += 1;
			}
		}
		
		System.out.println(answer);
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1267&quot; data-origin-height=&quot;87&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uOnOo/btsiOia9v82/4J2AVonVzPCOjrvvaCXM61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uOnOo/btsiOia9v82/4J2AVonVzPCOjrvvaCXM61/img.png&quot; data-alt=&quot;성능&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uOnOo/btsiOia9v82/4J2AVonVzPCOjrvvaCXM61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuOnOo%2FbtsiOia9v82%2F4J2AVonVzPCOjrvvaCXM61%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;1267&quot; height=&quot;87&quot; data-origin-width=&quot;1267&quot; data-origin-height=&quot;87&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;성능&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;쓸데없이 조금 어렵게 푼듯.. 그리고 변수명 뭐할지 생각이 안나서 그냥 cnt, cnt2라고 했다. ㅠ ㅠ&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;그냥 배열에 'A'면 0번째에 +1, 'B'면 1번째에 +1 ... 이렇게 체크해놓고&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;1차원 배열이니까 그냥 clone() 메소드 써서 비교 문자열 알파벳 체크하는게 나을 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>알고리즘/백준</category>
      <category>2607 java</category>
      <category>2607 자바</category>
      <category>2607 풀이</category>
      <category>baekjoon 2607</category>
      <category>백준 2607</category>
      <category>백준 2607 java</category>
      <category>백준 2607 자바</category>
      <author>정석이</author>
      <guid isPermaLink="true">https://ticssfm.tistory.com/211</guid>
      <comments>https://ticssfm.tistory.com/211#entry211comment</comments>
      <pubDate>Mon, 5 Jun 2023 23:15:51 +0900</pubDate>
    </item>
    <item>
      <title>[BaekJoon] 백준 20920번 _ 영단어 암기는 어려워 for JAVA</title>
      <link>https://ticssfm.tistory.com/210</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/20920&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/20920&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1685862694191&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;20920번: 영단어 암기는 괴로워&quot; data-og-description=&quot;첫째 줄에는 영어 지문에 나오는 단어의 개수 $N$과 외울 단어의 길이 기준이 되는 $M$이 공백으로 구분되어 주어진다. ($1&amp;nbsp;\leq N&amp;nbsp;\leq 100\,000$, $1&amp;nbsp;\leq M&amp;nbsp;\leq 10$) 둘째 줄부터 $N+1$번째 줄까지 외울 단&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/20920&quot; data-og-url=&quot;https://www.acmicpc.net/problem/20920&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/baDHtw/hySRXB4tCE/NJTntISXjSDVyZlY2DVr81/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/20920&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/20920&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/baDHtw/hySRXB4tCE/NJTntISXjSDVyZlY2DVr81/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;20920번: 영단어 암기는 괴로워&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에는 영어 지문에 나오는 단어의 개수 $N$과 외울 단어의 길이 기준이 되는 $M$이 공백으로 구분되어 주어진다. ($1&amp;nbsp;\leq N&amp;nbsp;\leq 100\,000$, $1&amp;nbsp;\leq M&amp;nbsp;\leq 10$) 둘째 줄부터 $N+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;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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1530&quot; data-origin-height=&quot;1286&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cSVtqw/btsiFDekKVP/Ga6Ks1KDsZyh0WdZTD7t7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cSVtqw/btsiFDekKVP/Ga6Ks1KDsZyh0WdZTD7t7K/img.png&quot; data-alt=&quot;문제&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cSVtqw/btsiFDekKVP/Ga6Ks1KDsZyh0WdZTD7t7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcSVtqw%2FbtsiFDekKVP%2FGa6Ks1KDsZyh0WdZTD7t7K%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;800&quot; height=&quot;672&quot; data-origin-width=&quot;1530&quot; data-origin-height=&quot;1286&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;문제&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&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;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;map에는 다양한 메소드가 많은데 맨날 put get contains 이런거만 쓰는 것 같아서 언제한번 정리해보려고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;아무튼 풀이를 해보자면&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;사실 신경써야하는건 얘네가 정렬되는 순서이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&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;자주 나오는 단어일수록 앞에 배치한다.&lt;/li&gt;
&lt;li style=&quot;color: #555555;&quot;&gt;해당 단어의 길이가 길수록 앞에 배치한다.&lt;/li&gt;
&lt;li style=&quot;color: #555555;&quot;&gt;알파벳 사전 순으로 앞에 있는&amp;nbsp;단어일수록 앞에 배치한다&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;이렇게임&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;Comparable&amp;lt;&amp;gt;을 오버라이딩해서 정렬 시 저 순서대로 정렬해주면 되는 간단한 문제이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;u&gt;Comparable 오버라이딩 할 때 return값이 양수이면 앞, 음수이면 뒤쪽&lt;/u&gt;으로 배치된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;그러니까 1,2번은 내림차순이니까 (들어오는 객체 - 현재객체) 순으로 return 해줘야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;그리고 compareTo() 사용하면 단어 사전순으로 정렬할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;만약 &lt;u&gt;a.compareTo(b) 일 때 매개변수 문자열, 즉 b가 더 크면 음수, 반대면 양수&lt;/u&gt;가 나온다. (같으면 0)&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;따라서 사전순으로 배치해야하므로 들어오는애가 매개변수로 들어가야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;코드&lt;/p&gt;
&lt;pre id=&quot;code_1685862796779&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.io.*;

public class Main {
	
	static class Words implements Comparable&amp;lt;Words&amp;gt;{
		String word;
		int cnt;
		
		public Words(String word, int cnt) {
			this.word = word;
			this.cnt = cnt;
		}

		@Override
		public int compareTo(Words o) {
			if(this.cnt != o.cnt) return o.cnt - this.cnt;
			else if(o.word.length() != this.word.length()) return o.word.length() - this.word.length();
			return this.word.compareTo(o.word);
		}	
	}

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int N = Integer.parseInt(st.nextToken());
		int M = Integer.parseInt(st.nextToken());
		
		HashMap&amp;lt;String, Integer&amp;gt; map = new HashMap&amp;lt;&amp;gt;();
		
		for(int i=0; i&amp;lt;N; i++) {
			String input = br.readLine();
			if(input.length() &amp;lt; M) continue;
			
			if(!map.containsKey(input)) {
				map.put(input, 1);
			} else {
				int value = map.get(input);
				map.replace(input, value+1);
			}
		}
		
		/* */
		ArrayList&amp;lt;Words&amp;gt; list = new ArrayList&amp;lt;&amp;gt;();
		map.forEach((key, value) -&amp;gt; {
			list.add(new Words(key, value));
		});
		Collections.sort(list);
		
		StringBuilder sb = new StringBuilder();
		for(Words word : list) {
			sb.append(word.word).append('\n');
		}
		
		System.out.println(sb.toString());
		
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1460&quot; data-origin-height=&quot;226&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oz97m/btsivRR1aBi/TyQoPkypbsdf5Pp2Rw8rgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oz97m/btsivRR1aBi/TyQoPkypbsdf5Pp2Rw8rgK/img.png&quot; data-alt=&quot;성능&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oz97m/btsivRR1aBi/TyQoPkypbsdf5Pp2Rw8rgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Foz97m%2FbtsivRR1aBi%2FTyQoPkypbsdf5Pp2Rw8rgK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;93&quot; data-origin-width=&quot;1460&quot; data-origin-height=&quot;226&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;성능&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;size18&quot;&gt;이렇게 풀어봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;근데 뭔가.. 저거 하나때문에 클래스를 만드는거 뭔가 비효율적인 것 같기도 하네요..&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;그래서 다른 사람 풀이를 보고 고쳐보기로 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1685863474451&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.Collectors;
import java.io.*;

public class Main {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int N = Integer.parseInt(st.nextToken());
		int M = Integer.parseInt(st.nextToken());
		
		HashMap&amp;lt;String, Integer&amp;gt; map = new HashMap&amp;lt;&amp;gt;();
		
		for(int i=0; i&amp;lt;N; i++) {
			String input = br.readLine();
			if(input.length() &amp;lt; M) continue;
			
			int value = map.getOrDefault(input, 0);
			map.put(input, value+1);
		}
		
		/* */
		ArrayList&amp;lt;String&amp;gt; lists = (ArrayList&amp;lt;String&amp;gt;) map.keySet().stream().collect(Collectors.toList());
		
		lists.sort((o1,o2) -&amp;gt; {
			int v1 = map.get(o1);
			int v2 = map.get(o2);
			
			if(v1 == v2) {
				if(o1.length() == o2.length()) {
					return o1.compareTo(o2);
				}
				return o2.length() - o1.length();
			}
			return v2-v1;
		});
		
		StringBuilder sb = new StringBuilder();
		for(String list : lists) {
			sb.append(list).append('\n');
		}
		
		System.out.println(sb.toString());
		
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1462&quot; data-origin-height=&quot;228&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwGSnU/btsiFNgVCe7/LoCTfbPgnZV6dpsYGwEPC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwGSnU/btsiFNgVCe7/LoCTfbPgnZV6dpsYGwEPC0/img.png&quot; data-alt=&quot;성능&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwGSnU/btsiFNgVCe7/LoCTfbPgnZV6dpsYGwEPC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwGSnU%2FbtsiFNgVCe7%2FLoCTfbPgnZV6dpsYGwEPC0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;94&quot; data-origin-width=&quot;1462&quot; data-origin-height=&quot;228&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;성능&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;성능이 좋아지진 않았다!!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;stream도 여러 메소드를 지원해서 좋은듯. 얘도 나중에 공부해봐야지~&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>알고리즘/백준</category>
      <category>20920 java</category>
      <category>20920 자바</category>
      <category>백준</category>
      <category>백준 20920</category>
      <category>백준 20920 java</category>
      <category>영단어 암기는 괴로워 자바</category>
      <category>영단어암기는괴로워</category>
      <category>영단어암기는괴로워 java</category>
      <author>정석이</author>
      <guid isPermaLink="true">https://ticssfm.tistory.com/210</guid>
      <comments>https://ticssfm.tistory.com/210#entry210comment</comments>
      <pubDate>Sun, 4 Jun 2023 16:26:57 +0900</pubDate>
    </item>
  </channel>
</rss>