<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>공부 모음집</title>
    <link>https://dkan9634.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Wed, 6 May 2026 20:41:23 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>은 딩</managingEditor>
    <image>
      <title>공부 모음집</title>
      <url>https://tistory1.daumcdn.net/tistory/4969393/attach/7cbf7609fdc84775a837a92b8b46b5f4</url>
      <link>https://dkan9634.tistory.com</link>
    </image>
    <item>
      <title>[백준/BOJ][Python] 14503번 로봇 청소기</title>
      <link>https://dkan9634.tistory.com/229</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[백준/BOJ][Python] 14503번&amp;nbsp;로봇&amp;nbsp;청소기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/14503&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/14503&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1705035202184&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;14503번: 로봇 청소기&quot; data-og-description=&quot;첫째 줄에 방의 크기 $N$과 $M$이 입력된다. $(3 \le N, M \le 50)$  둘째 줄에 처음에 로봇 청소기가 있는 칸의 좌표 $(r, c)$와 처음에 로봇 청소기가 바라보는 방향 $d$가 입력된다. $d$가 $0$인 경우 북쪽&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/14503&quot; data-og-url=&quot;https://www.acmicpc.net/problem/14503&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/lbaaH/hyU2nsKjlv/IvwcXdShykHbuSM8Zggx4K/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/14503&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/14503&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/lbaaH/hyU2nsKjlv/IvwcXdShykHbuSM8Zggx4K/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;14503번: 로봇 청소기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 방의 크기 $N$과 $M$이 입력된다. $(3 \le N, M \le 50)$  둘째 줄에 처음에 로봇 청소기가 있는 칸의 좌표 $(r, c)$와 처음에 로봇 청소기가 바라보는 방향 $d$가 입력된다. $d$가 $0$인 경우 북쪽&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1335&quot; data-origin-height=&quot;288&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rNPyS/btsDpcaeXhg/Vz0voSqY9JfY9bho04DKO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rNPyS/btsDpcaeXhg/Vz0voSqY9JfY9bho04DKO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rNPyS/btsDpcaeXhg/Vz0voSqY9JfY9bho04DKO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrNPyS%2FbtsDpcaeXhg%2FVz0voSqY9JfY9bho04DKO1%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;1335&quot; height=&quot;288&quot; data-origin-width=&quot;1335&quot; data-origin-height=&quot;288&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1507&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/01vSh/btsDloXhThR/3NKgb23xtuPNkScy6HCp91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/01vSh/btsDloXhThR/3NKgb23xtuPNkScy6HCp91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/01vSh/btsDloXhThR/3NKgb23xtuPNkScy6HCp91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F01vSh%2FbtsDloXhThR%2F3NKgb23xtuPNkScy6HCp91%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;1507&quot; height=&quot;640&quot; data-origin-width=&quot;1507&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1550&quot; data-origin-height=&quot;296&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Bv1pt/btsDnESw30D/uKmI8IGbUuk7lrm47BXh01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Bv1pt/btsDnESw30D/uKmI8IGbUuk7lrm47BXh01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Bv1pt/btsDnESw30D/uKmI8IGbUuk7lrm47BXh01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBv1pt%2FbtsDnESw30D%2FuKmI8IGbUuk7lrm47BXh01%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;1550&quot; height=&quot;296&quot; data-origin-width=&quot;1550&quot; data-origin-height=&quot;296&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;h2 style=&quot;color: #585f69;&quot; data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p style=&quot;color: #555555;&quot; data-ke-size=&quot;size16&quot;&gt;로봇 청소기가 작동을 시작한 후 작동을 멈출 때까지 청소하는 칸의 개수를 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 style=&quot;color: #585f69;&quot; data-ke-size=&quot;size26&quot;&gt;예제 입력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-1&quot; class=&quot;basic&quot; style=&quot;background-color: #f7f7f9; color: #333333;&quot;&gt;&lt;code&gt;3 3
1 1 0
1 1 1
1 0 1
1 1 1
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 style=&quot;color: #585f69;&quot; data-ke-size=&quot;size26&quot;&gt;예제 출력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-1&quot; class=&quot;angelscript&quot; style=&quot;background-color: #f7f7f9; color: #333333;&quot;&gt;&lt;code&gt;1
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 style=&quot;color: #585f69;&quot; data-ke-size=&quot;size26&quot;&gt;예제 입력 2&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-2&quot; class=&quot;basic&quot; style=&quot;background-color: #f7f7f9; color: #333333;&quot;&gt;&lt;code&gt;11 10
7 4 0
1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 1
1 0 0 0 1 1 1 1 0 1
1 0 0 1 1 0 0 0 0 1
1 0 1 1 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 1 0 1
1 0 0 0 0 0 1 1 0 1
1 0 0 0 0 0 1 1 0 1
1 0 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 style=&quot;color: #585f69;&quot; data-ke-size=&quot;size26&quot;&gt;예제 출력 2&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-2&quot; class=&quot;angelscript&quot; style=&quot;background-color: #f7f7f9; color: #333333;&quot;&gt;&lt;code&gt;57&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&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;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;아이디어&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 풀면서 예외처리를 엄청나게 하다가 정말 효율적인 방법이 없을까하고 풀이를 찾아봤다. 찾아보면서 알게 된 사실이 여러가지 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;반시계 방향으로 90도 회전&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;북동남서 0123을 반시계방향으로 회전하면 3012가 된다. 이걸 한 번에 나타내는 식이&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;(d+3) % 4&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;( 좀 충격이었다. 난 이걸 d에서 1을 빼고 d가 음수면 3으로 지정하는 식으로 풀고 있었다. 이렇게 간단한 방법이 있었다니.)&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;b&gt;후진&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;dr = [-1, 0, 1, 0]&lt;br /&gt;dc = [0, 1, 0, -1]&lt;/blockquote&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;blockquote data-ke-style=&quot;style3&quot;&gt;room[r][c]에서의 후진값은&lt;br /&gt;room[r-dr[d]][c-dc[d]]&lt;/blockquote&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;blockquote data-ke-style=&quot;style2&quot;&gt;1. 반시계 방향으로 90도 회전하고 청소가 가능하면 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;방문 처리, 청소, 위치 갱신&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;(청소가 가능하다 = 동서남북 중 빈칸이 있다.)&lt;br /&gt;2. 동서남북 빈칸이 없으면?&lt;br /&gt;- 후진해서 벽이면 break&lt;br /&gt;- 아니면 위치 갱신&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;+) 동서남북에 빈칸 여부를 확인하는 방법은 flag 변수를 이용해 False로 초기화했다가 만약 빈칸이 하나라도 있어 청소를 해줬다면 True로 바꿔주면 된다.&amp;nbsp; 즉, flag False =&amp;gt; 동서남북 빈칸X, True =&amp;gt; 동서남북 빈칸O&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;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;코드&lt;/h2&gt;
&lt;pre id=&quot;code_1705035895310&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#14503 로봇 청소기

n, m = map(int, input().split())
r, c, d = map(int, input().split())
# 북동남서 0123
room = [list(map(int, input().split())) for _ in range(n)]
# 방문
visited = [[0]*m  for _ in range(n)]

# 시작 지점
cnt = 1
visited[r][c] = 1

dr = [-1, 0, 1, 0]
dc = [0, 1, 0, -1]

while True:
    flag = False # 아직 청소X
    for _ in range(4): # 동서남북 돌기
        d = (d+3) % 4 # 왼쪽 방향으로 돌리기
        nr = r + dr[d]
        nc = c + dc[d]

        # 범위 안 and 빈칸 =&amp;gt; 청소 가능
        # 방문해서 청소, cnt, 위치 갱신, flag 변경
        if 0 &amp;lt;= nr &amp;lt; n and 0 &amp;lt;= nc &amp;lt; m and room[nr][nc] == 0:
            if visited[nr][nc] == 0:
                visited[nr][nc] = 1
                cnt += 1
                r, c = nr, nc
                flag = True #청소했다는 뜻
                break
    if not(flag): # flag false 즉, 위 for문에 안들어감
        # 네 방향 모두 청소X
        # 후진시 벽이면 break
        # 벽이 아니면 갱신
        if room[r-dr[d]][c-dc[d]] == 1: # 벽이라면 +) 내가 가지고 있는 방향을 빼주면 후진값
            print(cnt)
            break
        else:
            r,c = r-dr[d], c-dc[d]&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Algorithm/알고리즘 문제</category>
      <author>은 딩</author>
      <guid isPermaLink="true">https://dkan9634.tistory.com/229</guid>
      <comments>https://dkan9634.tistory.com/229#entry229comment</comments>
      <pubDate>Fri, 12 Jan 2024 14:06:42 +0900</pubDate>
    </item>
    <item>
      <title>[백준/BOJ][Python] 2579번 계단 오르기</title>
      <link>https://dkan9634.tistory.com/228</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[백준/BOJ][Python] 2579번 계단 오르기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2579&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/2579&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1703442570577&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;2579번: 계단 오르기&quot; data-og-description=&quot;계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. &amp;lt;그림 1&amp;gt;과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2579&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2579&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bhBsSw/hyUPIcWeL6/l64TibyJcguNLBX5KXAp50/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480,https://scrap.kakaocdn.net/dn/cyqwve/hyUTLeLDlu/XE4Jh1K0L8FaS43oNV1ZLk/img.png?width=962&amp;amp;height=610&amp;amp;face=0_0_962_610,https://scrap.kakaocdn.net/dn/tfF4y/hyUTGLizhi/Fduhk9jTrLcfooWMsrZiSk/img.png?width=962&amp;amp;height=514&amp;amp;face=0_0_962_514&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2579&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2579&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bhBsSw/hyUPIcWeL6/l64TibyJcguNLBX5KXAp50/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480,https://scrap.kakaocdn.net/dn/cyqwve/hyUTLeLDlu/XE4Jh1K0L8FaS43oNV1ZLk/img.png?width=962&amp;amp;height=610&amp;amp;face=0_0_962_610,https://scrap.kakaocdn.net/dn/tfF4y/hyUTGLizhi/Fduhk9jTrLcfooWMsrZiSk/img.png?width=962&amp;amp;height=514&amp;amp;face=0_0_962_514');&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;2579번: 계단 오르기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. &amp;lt;그림 1&amp;gt;과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;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;306&quot; data-origin-height=&quot;156&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w1wHJ/btsCEKSLIv2/uESAKATYOVvpcOkLyIba60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w1wHJ/btsCEKSLIv2/uESAKATYOVvpcOkLyIba60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w1wHJ/btsCEKSLIv2/uESAKATYOVvpcOkLyIba60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw1wHJ%2FbtsCEKSLIv2%2FuESAKATYOVvpcOkLyIba60%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;306&quot; height=&quot;156&quot; data-origin-width=&quot;306&quot; data-origin-height=&quot;156&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;h2 style=&quot;color: #585f69;&quot; data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p style=&quot;color: #555555;&quot; data-ke-size=&quot;size16&quot;&gt;계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. &amp;lt;그림 1&amp;gt;과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;514&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vRP6p/btsCyMqMSZH/Jr8Oo1S4S3jJFUVduDZDV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vRP6p/btsCyMqMSZH/Jr8Oo1S4S3jJFUVduDZDV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vRP6p/btsCyMqMSZH/Jr8Oo1S4S3jJFUVduDZDV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvRP6p%2FbtsCyMqMSZH%2FJr8Oo1S4S3jJFUVduDZDV0%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;962&quot; height=&quot;514&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;514&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #555555; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;lt;그림 1&amp;gt;&lt;/p&gt;
&lt;p style=&quot;color: #555555;&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 &amp;lt;그림 2&amp;gt;와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;610&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lQETY/btsCywaxxkf/s4kuroNEKe8xvecFC0BqBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lQETY/btsCywaxxkf/s4kuroNEKe8xvecFC0BqBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lQETY/btsCywaxxkf/s4kuroNEKe8xvecFC0BqBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlQETY%2FbtsCywaxxkf%2Fs4kuroNEKe8xvecFC0BqBK%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;962&quot; height=&quot;610&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;610&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #555555; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;lt;그림 2&amp;gt;&lt;/p&gt;
&lt;p style=&quot;color: #555555;&quot; data-ke-size=&quot;size16&quot;&gt;계단 오르는 데는 다음과 같은 규칙이 있다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li 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;마지막 도착 계단은 반드시 밟아야 한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #555555;&quot; data-ke-size=&quot;size16&quot;&gt;따라서 첫 번째 계단을 밟고 이어 두 번째 계단이나, 세 번째 계단으로 오를 수 있다. 하지만, 첫 번째 계단을 밟고 이어 네 번째 계단으로 올라가거나, 첫 번째, 두 번째, 세 번째 계단을 연속해서 모두 밟을 수는 없다.&lt;/p&gt;
&lt;p style=&quot;color: #555555;&quot; data-ke-size=&quot;size16&quot;&gt;각 계단에 쓰여 있는 점수가 주어질 때 이 게임에서 얻을 수 있는 총 점수의 최댓값을 구하는 프로그램을 작성하시오.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;h2 style=&quot;color: #585f69;&quot; data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p style=&quot;color: #555555;&quot; data-ke-size=&quot;size16&quot;&gt;입력의 첫째 줄에 계단의 개수가 주어진다.&lt;/p&gt;
&lt;p style=&quot;color: #555555;&quot; data-ke-size=&quot;size16&quot;&gt;둘째 줄부터 한 줄에 하나씩 제일 아래에 놓인 계단부터 순서대로 각 계단에 쓰여 있는 점수가 주어진다. 계단의 개수는 300이하의 자연수이고, 계단에 쓰여 있는 점수는 10,000이하의 자연수이다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;h2 style=&quot;color: #585f69;&quot; data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p style=&quot;color: #555555;&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 계단 오르기 게임에서 얻을 수 있는 총 점수의 최댓값을 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 style=&quot;color: #585f69;&quot; data-ke-size=&quot;size26&quot;&gt;예제 입력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-1&quot; class=&quot;angelscript&quot; style=&quot;background-color: #f7f7f9; color: #333333;&quot;&gt;&lt;code&gt;6
10
20
15
25
10
20
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 style=&quot;color: #585f69;&quot; data-ke-size=&quot;size26&quot;&gt;예제 출력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-1&quot; class=&quot;angelscript&quot; style=&quot;background-color: #f7f7f9; color: #333333;&quot;&gt;&lt;code&gt;75&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;아이디어&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막 계단은 꼭 밟아야하고 첫 번째 계단은 꼭 안 밟아도 되고 세 번 연속 안되고 여러 조건을 생각하느라 마지막 계단부터 시작도 하고 변수 만들어서 연속 2번 더했는지 체크하면서 풀고 있었는데 문득 이렇게 풀면 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;아무튼 DP는 점화식을 만드는 게 중요하다.&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;i 번째 계단을 오르는 경우의 수는 두 가지가 있다.(이거 찾는 게 정말 어려운 것 같다.................................)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) i-2번째 계단을 밟은 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) i-3번째, i-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;이 두 경우 중 더 큰 값을 찾아서 해당 계단 점수를 더해주면 된다.&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1132&quot; data-origin-height=&quot;581&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cTwoVa/btsCzD72uru/WCZk2hwUrNjeOvAawwDWJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cTwoVa/btsCzD72uru/WCZk2hwUrNjeOvAawwDWJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cTwoVa/btsCzD72uru/WCZk2hwUrNjeOvAawwDWJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcTwoVa%2FbtsCzD72uru%2FWCZk2hwUrNjeOvAawwDWJk%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;1132&quot; height=&quot;581&quot; data-origin-width=&quot;1132&quot; data-origin-height=&quot;581&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;체크 계단을 밟는 경우의 수는 초록색 화살표로 가는 경우 또는 갈색 화살표로 가는 경우 2가지가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(여기서 왜 i-3번째 계단까지 체크했냐면 문제에서 연속 세 개는 안된다고 했기 때문)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그림에서 체크 계단을 밟는 경우의 수를 같은 방식으로 구할 수 있기 때문에&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;코드&lt;/h2&gt;
&lt;pre id=&quot;code_1703442859054&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
input = sys.stdin.readline

# 2579번 계단 오르기
n = int(input())
stairs = [0]
for _ in range(n):
    stairs.append(int(input()))

MAX = 300
dp = [0]*(MAX+1)

# dp[x] =&amp;gt; x계단까지 올라가는 최대 점수
if n &amp;lt;= 2:
    print(sum(stairs))
else:
    dp[1] = stairs[1]
    dp[2] = dp[1] + stairs[2]

    for i in range(3, n+1):
        dp[i] = max(dp[i-2], dp[i-3] + stairs[i-1]) + stairs[i]

    print(dp[n])&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Algorithm/알고리즘 문제</category>
      <author>은 딩</author>
      <guid isPermaLink="true">https://dkan9634.tistory.com/228</guid>
      <comments>https://dkan9634.tistory.com/228#entry228comment</comments>
      <pubDate>Mon, 25 Dec 2023 03:47:27 +0900</pubDate>
    </item>
    <item>
      <title>[백준/BOJ][Python] 24390번 또 전자레인지야?</title>
      <link>https://dkan9634.tistory.com/227</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[백준/BOJ][Python] 24390번 또 전자레인지야?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/24390&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/24390&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1701275608685&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;24390번: 또 전자레인지야?&quot; data-og-description=&quot;첫 줄에 잇창명이 원하는 조리시간이 M:S 형태로 주어진다(0 &amp;le; M &amp;le; 60, 0 &amp;le; S &amp;le; 59). M은 분, S는 초이며, 항상 두 자리 숫자로 주어진다. 조리시간은 10초 이상 60분(3600초) 이하이며, 항상 10의 배수&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/24390&quot; data-og-url=&quot;https://www.acmicpc.net/problem/24390&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/zvLvj/hyUE7vZoWb/kYUGE4n5fwT4xwQOtj2x9k/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/24390&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/24390&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/zvLvj/hyUE7vZoWb/kYUGE4n5fwT4xwQOtj2x9k/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;24390번: 또 전자레인지야?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫 줄에 잇창명이 원하는 조리시간이 M:S 형태로 주어진다(0 &amp;le; M &amp;le; 60, 0 &amp;le; S &amp;le; 59). M은 분, S는 초이며, 항상 두 자리 숫자로 주어진다. 조리시간은 10초 이상 60분(3600초) 이하이며, 항상 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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;336&quot; data-origin-height=&quot;137&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vlglA/btsA6RnbQcO/ipl805gJ5ygoYcaJNqqD5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vlglA/btsA6RnbQcO/ipl805gJ5ygoYcaJNqqD5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vlglA/btsA6RnbQcO/ipl805gJ5ygoYcaJNqqD5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvlglA%2FbtsA6RnbQcO%2Fipl805gJ5ygoYcaJNqqD5K%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;336&quot; height=&quot;137&quot; data-origin-width=&quot;336&quot; data-origin-height=&quot;137&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1390&quot; data-origin-height=&quot;132&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eKmyZs/btsBbFyYSzg/hvxoaFm3kKC44TcxjAwb0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eKmyZs/btsBbFyYSzg/hvxoaFm3kKC44TcxjAwb0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eKmyZs/btsBbFyYSzg/hvxoaFm3kKC44TcxjAwb0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeKmyZs%2FbtsBbFyYSzg%2FhvxoaFm3kKC44TcxjAwb0K%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;1390&quot; height=&quot;132&quot; data-origin-width=&quot;1390&quot; data-origin-height=&quot;132&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;h2 style=&quot;color: #585f69;&quot; data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p style=&quot;color: #555555;&quot; data-ke-size=&quot;size16&quot;&gt;잇창명의 집에는 오래된 전자레인지가 있다. 백준 온라인 저지에서 문제를 너무 많이 푼 잇창명은 문득 이런 궁금증이 생기기 시작했다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p style=&quot;color: #555555;&quot; data-ke-size=&quot;size16&quot;&gt;버튼을 최소 몇 번 눌러야 조리시간 2분을 맞출 수 있을까?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;color: #555555;&quot; data-ke-size=&quot;size16&quot;&gt;잇창명의 전자레인지에는 다음과 같이 버튼이 4개 있고, 각 버튼을 누르면 다음과 같이 작동한다. 초기 상태에는 조리시간이 0초이고, 조리 중이 아니며, 조리시작 버튼을 눌러야 조리가 시작된다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;color: #555555;&quot;&gt;10초: 조리시간이 10초 늘어난다.&lt;/li&gt;
&lt;li style=&quot;color: #555555;&quot;&gt;1분: 조리시간이 1분(60초) 늘어난다.&lt;/li&gt;
&lt;li style=&quot;color: #555555;&quot;&gt;10분: 조리시간이 10분(600초) 늘어난다.&lt;/li&gt;
&lt;li style=&quot;color: #555555;&quot;&gt;조리시작
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;color: #555555;&quot;&gt;조리 중이 아닐 때: 조리가 시작된다. 만약에 조리시간이 0초였다면 30초로 늘어난다.&lt;/li&gt;
&lt;li style=&quot;color: #555555;&quot;&gt;조리 중일 때: 조리시간이 30초 늘어난다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;color: #555555;&quot;&gt;모든 버튼은 조리 중인지의 여부와 무관하게 항상 누를 수 있으며, 별도의 언급이 없을 경우 항상 같은 동작을 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #555555;&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 이 전자레인지로 2분을 맞추려면 조리시작 버튼을 4번 누르면 되지만, 최적의 방법은 아니다. 그 대신 1분-1분-조리시작 순서로 버튼을 누르면 버튼을 누른 횟수가 3번이 되어 최적이다. 1분-1분의 경우에는 조리가 되지 않기 때문에 최적이 아니다. 실제로는 조리 중에는 남은 조리시간이 계속 줄어들고 중간에 조리를 취소할 수 있지만, 이 문제에서는 생각하지 않기로 한다.&lt;/p&gt;
&lt;p style=&quot;color: #555555;&quot; data-ke-size=&quot;size16&quot;&gt;잇창명은 지난 한 학기 동안 전자레인지를 이용할 때마다 매번 문제로 내고 싶은 마음이 들어서 괴로워하고 있다. 잇창명을 도와주자!&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;h2 style=&quot;color: #585f69;&quot; data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p style=&quot;color: #555555;&quot; data-ke-size=&quot;size16&quot;&gt;첫 줄에 잇창명이 원하는 조리시간이&lt;span&gt;&amp;nbsp;&lt;/span&gt;M:S&lt;span&gt;&amp;nbsp;&lt;/span&gt;형태로 주어진다(0 &amp;le;&lt;span&gt;&amp;nbsp;&lt;/span&gt;M&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;le; 60, 0 &amp;le;&lt;span&gt;&amp;nbsp;&lt;/span&gt;S&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;le; 59).&lt;span&gt;&amp;nbsp;&lt;/span&gt;M은 분,&lt;span&gt;&amp;nbsp;&lt;/span&gt;S는 초이며, 항상 두 자리 숫자로 주어진다.&lt;/p&gt;
&lt;p style=&quot;color: #555555;&quot; data-ke-size=&quot;size16&quot;&gt;조리시간은 10초 이상 60분(3600초) 이하이며, 항상 10의 배수이다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;h2 style=&quot;color: #585f69;&quot; data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p style=&quot;color: #555555;&quot; data-ke-size=&quot;size16&quot;&gt;주어진 조리시간을 맞추기 위해 버튼을 눌러야 하는 최소 횟수를 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 style=&quot;color: #585f69;&quot; data-ke-size=&quot;size26&quot;&gt;예제 입력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-1&quot; class=&quot;angelscript&quot; style=&quot;background-color: #f7f7f9; color: #333333;&quot;&gt;&lt;code&gt;02:00
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 style=&quot;color: #585f69;&quot; data-ke-size=&quot;size26&quot;&gt;예제 출력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;복사&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-1&quot; class=&quot;angelscript&quot; style=&quot;background-color: #f7f7f9; color: #333333;&quot;&gt;&lt;code&gt;3&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&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;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;아이디어&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조리 시작 버튼은 무조건 눌러야 하므로 btn은 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;만약 30초 이상이면 조리 시작 버튼을 눌러야 하는데 이미 1로 뒀으므로 이 경우에만 30초 빼고 계산해주면 된다.&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;코드&lt;/h2&gt;
&lt;pre id=&quot;code_1701275669746&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;M, S = map(int, input().split(':'))
btn = 1
# minute
btn += (M // 10 + M % 10)

# second
if S &amp;gt;= 30:
    btn += ((S-30) // 10)
else:
    btn += (S // 10)

print(btn)&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Algorithm/알고리즘 문제</category>
      <author>은 딩</author>
      <guid isPermaLink="true">https://dkan9634.tistory.com/227</guid>
      <comments>https://dkan9634.tistory.com/227#entry227comment</comments>
      <pubDate>Thu, 30 Nov 2023 01:36:06 +0900</pubDate>
    </item>
    <item>
      <title>[백준/BOJ][Python] 16953번 A &amp;rarr; B</title>
      <link>https://dkan9634.tistory.com/226</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[백준/BOJ][Python] 16953번 &lt;span&gt;A &amp;rarr; B&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/16953&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/16953&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1701275168672&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/kWY9I/hyUE98qrnT/0NuNsnYL3Nwr97a5ezGRI1/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/kWY9I/hyUE98qrnT/0NuNsnYL3Nwr97a5ezGRI1/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;202&quot; data-origin-height=&quot;133&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PUzqA/btsA7S0pHWW/aQwUCN1tZBwk9FvrlyyAk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PUzqA/btsA7S0pHWW/aQwUCN1tZBwk9FvrlyyAk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PUzqA/btsA7S0pHWW/aQwUCN1tZBwk9FvrlyyAk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPUzqA%2FbtsA7S0pHWW%2FaQwUCN1tZBwk9FvrlyyAk1%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;202&quot; height=&quot;133&quot; data-origin-width=&quot;202&quot; data-origin-height=&quot;133&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1344&quot; data-origin-height=&quot;158&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rthtQ/btsA4bGj7pd/joO6kPI4ZgJZmpjn4geTD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rthtQ/btsA4bGj7pd/joO6kPI4ZgJZmpjn4geTD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rthtQ/btsA4bGj7pd/joO6kPI4ZgJZmpjn4geTD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrthtQ%2FbtsA4bGj7pd%2FjoO6kPI4ZgJZmpjn4geTD0%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;1344&quot; height=&quot;158&quot; data-origin-width=&quot;1344&quot; data-origin-height=&quot;158&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;h2 style=&quot;color: #585f69;&quot; data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_description&quot;&gt;
&lt;p style=&quot;color: #555555;&quot; data-ke-size=&quot;size16&quot;&gt;정수 A를 B로 바꾸려고 한다. 가능한 연산은 다음과 같은 두 가지이다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;color: #555555;&quot;&gt;2를 곱한다.&lt;/li&gt;
&lt;li style=&quot;color: #555555;&quot;&gt;1을 수의 가장 오른쪽에 추가한다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #555555;&quot; data-ke-size=&quot;size16&quot;&gt;A를 B로 바꾸는데 필요한 연산의 최솟값을 구해보자.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;h2 style=&quot;color: #585f69;&quot; data-ke-size=&quot;size26&quot;&gt;입력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_input&quot;&gt;
&lt;p style=&quot;color: #555555;&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 A, B (1 &amp;le; A &amp;lt; B &amp;le; 109)가 주어진다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;h2 style=&quot;color: #585f69;&quot; data-ke-size=&quot;size26&quot;&gt;출력&lt;/h2&gt;
&lt;/div&gt;
&lt;div id=&quot;problem_output&quot;&gt;
&lt;p style=&quot;color: #555555;&quot; data-ke-size=&quot;size16&quot;&gt;A를 B로 바꾸는데 필요한 연산의 최솟값에 1을 더한 값을 출력한다. 만들 수 없는 경우에는 -1을 출력한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 style=&quot;color: #585f69;&quot; data-ke-size=&quot;size26&quot;&gt;예제 입력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-1&quot; class=&quot;basic&quot; style=&quot;background-color: #f7f7f9; color: #333333;&quot;&gt;&lt;code&gt;2 162
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 style=&quot;color: #585f69;&quot; data-ke-size=&quot;size26&quot;&gt;예제 출력 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-1&quot; class=&quot;angelscript&quot; style=&quot;background-color: #f7f7f9; color: #333333;&quot;&gt;&lt;code&gt;5
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id=&quot;problem_sample_explain_1&quot;&gt;
&lt;p style=&quot;color: #555555;&quot; data-ke-size=&quot;size16&quot;&gt;2&amp;nbsp;&amp;rarr; 4&amp;nbsp;&amp;rarr; 8&amp;nbsp;&amp;rarr; 81&amp;nbsp;&amp;rarr; 162&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 style=&quot;color: #585f69;&quot; data-ke-size=&quot;size26&quot;&gt;예제 입력 2&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-2&quot; class=&quot;basic&quot; style=&quot;background-color: #f7f7f9; color: #333333;&quot;&gt;&lt;code&gt;4 42
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 style=&quot;color: #585f69;&quot; data-ke-size=&quot;size26&quot;&gt;예제 출력 2&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-2&quot; class=&quot;angelscript&quot; style=&quot;background-color: #f7f7f9; color: #333333;&quot;&gt;&lt;code&gt;-1
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 style=&quot;color: #585f69;&quot; data-ke-size=&quot;size26&quot;&gt;예제 입력 3&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-input-3&quot; class=&quot;basic&quot; style=&quot;background-color: #f7f7f9; color: #333333;&quot;&gt;&lt;code&gt;100 40021
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 style=&quot;color: #585f69;&quot; data-ke-size=&quot;size26&quot;&gt;예제 출력 3&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;sample-output-3&quot; class=&quot;angelscript&quot; style=&quot;background-color: #f7f7f9; color: #333333;&quot;&gt;&lt;code&gt;5&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;아이디어&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;거꾸로 생각해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A에서 B로 가는 걸 생각하는 게 아니라 B에서 A로 간다고 생각해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약에 B 일의 자리가 1이라면 그 전 과정에서 1을 붙인거고, 1이 아니라면 2배한 것이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1을 붙인거라면 B의 일의자리만 빼고 갱신해준다. 즉 1891이었다면 189로 갱신! 이건 10으로 나눈 몫을 생각하면 된다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;+) 1을 붙였다는 것은 10으로 나누었을 때 나머지가 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;2배한 경우면 2로 나눠주면 된다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 거꾸로 B를 갱신하며 몇 번 계산했는지 세주다가(result) B가 어느 순간 A랑 같아지면 result를 출력하면 되는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 B가 A보다 작아졌다?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 A로 B를 못 만드는 것이므로 -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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;코드&lt;/h2&gt;
&lt;pre id=&quot;code_1701275204633&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;A, B = map(int, input().split())
result = 1
# 거꾸로 생각
while True:
    if (B % 10) == 1: # 일의 자리가 1이면
        B //= 10
    else:
        B /= 2
    result += 1

    if A &amp;gt; B:
        print(-1)
        break

    if A == B:
        print(result)
        break&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Algorithm/알고리즘 문제</category>
      <author>은 딩</author>
      <guid isPermaLink="true">https://dkan9634.tistory.com/226</guid>
      <comments>https://dkan9634.tistory.com/226#entry226comment</comments>
      <pubDate>Thu, 30 Nov 2023 01:32:12 +0900</pubDate>
    </item>
    <item>
      <title>[백준/BOJ][Python] 11728번 배열 합치기</title>
      <link>https://dkan9634.tistory.com/225</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[백준/BOJ][Python] 11728번 배열 합치기&amp;nbsp;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/11728&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/11728&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1701275000472&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;11728번: 배열 합치기&quot; data-og-description=&quot;첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 &amp;le; N, M &amp;le; 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이&amp;nbsp;109보다 작거&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/11728&quot; data-og-url=&quot;https://www.acmicpc.net/problem/11728&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bj1KEw/hyUE0jlNqq/2BFPbvWkc6k3wpaInIpkmK/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/11728&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/11728&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bj1KEw/hyUE0jlNqq/2BFPbvWkc6k3wpaInIpkmK/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;11728번: 배열 합치기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 &amp;le; N, M &amp;le; 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이&amp;nbsp;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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;271&quot; data-origin-height=&quot;129&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blkIxO/btsA4dD17mc/kprIPeD2GkZAIhTCSOjYc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blkIxO/btsA4dD17mc/kprIPeD2GkZAIhTCSOjYc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blkIxO/btsA4dD17mc/kprIPeD2GkZAIhTCSOjYc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblkIxO%2FbtsA4dD17mc%2FkprIPeD2GkZAIhTCSOjYc0%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;271&quot; height=&quot;129&quot; data-origin-width=&quot;271&quot; data-origin-height=&quot;129&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1369&quot; data-origin-height=&quot;144&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9whpv/btsA7Trv0Ov/opRnHrOpIoMR2Zx3wcKkfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9whpv/btsA7Trv0Ov/opRnHrOpIoMR2Zx3wcKkfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9whpv/btsA7Trv0Ov/opRnHrOpIoMR2Zx3wcKkfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9whpv%2FbtsA7Trv0Ov%2FopRnHrOpIoMR2Zx3wcKkfk%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;1369&quot; height=&quot;144&quot; data-origin-width=&quot;1369&quot; data-origin-height=&quot;144&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;아이디어&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리스트 두 개 입력받고 합친 후에 정렬했다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;코드&lt;/h2&gt;
&lt;pre id=&quot;code_1701274968657&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
input = sys.stdin.readline

n, m = map(int, input().split())
A_list = list(map(int, input().split()))
B_list = list(map(int, input().split()))

answer = (A_list+B_list)
answer.sort()
print(*answer)&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Algorithm/알고리즘 문제</category>
      <author>은 딩</author>
      <guid isPermaLink="true">https://dkan9634.tistory.com/225</guid>
      <comments>https://dkan9634.tistory.com/225#entry225comment</comments>
      <pubDate>Thu, 30 Nov 2023 01:25:15 +0900</pubDate>
    </item>
    <item>
      <title>[백준/BOJ][Python] 3273번 두 수의 합</title>
      <link>https://dkan9634.tistory.com/224</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[백준/BOJ][Python] 3273번 두 수의 합&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/3273&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/3273&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1701274115387&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;3273번: 두 수의 합&quot; data-og-description=&quot;n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 &amp;le; i &amp;lt; j &amp;le; n)을 만족하는&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/3273&quot; data-og-url=&quot;https://www.acmicpc.net/problem/3273&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/pMTA8/hyUFdweTpE/mYdc1enyfWFLbxZbavRoF0/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/3273&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/3273&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/pMTA8/hyUFdweTpE/mYdc1enyfWFLbxZbavRoF0/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;3273번: 두 수의 합&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 &amp;le; i &amp;lt; j &amp;le; 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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1307&quot; data-origin-height=&quot;276&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bP5iA1/btsBc2Hctn3/YdRrbSucbAUMMUlw9XbSx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bP5iA1/btsBc2Hctn3/YdRrbSucbAUMMUlw9XbSx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bP5iA1/btsBc2Hctn3/YdRrbSucbAUMMUlw9XbSx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbP5iA1%2FbtsBc2Hctn3%2FYdRrbSucbAUMMUlw9XbSx0%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;1307&quot; height=&quot;276&quot; data-origin-width=&quot;1307&quot; data-origin-height=&quot;276&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;아이디어&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1128&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ctiAJK/btsA4VXJh8G/fTodHBM1vqe2JxqzHoVvE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ctiAJK/btsA4VXJh8G/fTodHBM1vqe2JxqzHoVvE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ctiAJK/btsA4VXJh8G/fTodHBM1vqe2JxqzHoVvE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FctiAJK%2FbtsA4VXJh8G%2FfTodHBM1vqe2JxqzHoVvE0%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;1128&quot; height=&quot;300&quot; data-origin-width=&quot;1128&quot; data-origin-height=&quot;300&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;2년 전 C++로 풀다가 시간 초과, 1년 전 python으로 풀다가 시간초과나서 묵혀뒀던 문제이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(사실 3일 전에 풀었는데 이제야 올린다..ㅎ)&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;문제는 정말 간단하다. 배열 주어지고 x가 주어졌을 때 배열에서 합이 x가 되는 쌍의 개수를 구하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 시간 초과인 이유는 이중for문으로 O(n^2) 대충 n의 최댓값은 &lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;100,000이니까 n^2이면 10,000,000,000 ㄷㄷ&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;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;암튼 투포인터로 풀면 간단하게 풀 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;처음에 투포인터라고 해서 이름이 무서워서 두려웠는데 C언어의 그 포인터가 아니었다ㅋㅋㅋ&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;그냥 인덱스 2개로 움직이는 것이다&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;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;이 문제는 맨 처음 인덱스(start), 맨 마지막 인덱스(end)로 정하고&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;둘의 합이 주어진 x보다 크면 start 인덱스를 오른쪽으로 (+1) 작으면 end 인덱스를 왼쪽으로 (-1) 움직이면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;만약 합이 x가 나왔다면 cnt + 1 하면 끝!!!&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;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;+) 그냥 갑자기 함수로 풀고 싶어서 함수로 풀었다&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;&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;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;코드&lt;/h2&gt;
&lt;pre id=&quot;code_1701274100548&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
input = sys.stdin.readline

n = int(input())
arr = list(map(int, input().split()))
x = int(input())

start = 0
end = len(arr) - 1
cnt = 0
arr.sort()

def Two_pointer(x):
    start = 0
    end = len(arr) - 1
    cnt = 0
    while start &amp;lt; end:
        sum = arr[start] + arr[end]
        if sum == x:
            cnt += 1
        if sum &amp;lt;= x:
            start += 1
        else:
            end -= 1
    return cnt

print(Two_pointer(x))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sort()가 O(nlogn)이기 때문에 이 코드의 시간 복잡도는 &lt;b&gt;O(nlogn)&lt;/b&gt;&lt;/p&gt;</description>
      <category>Algorithm/알고리즘 문제</category>
      <author>은 딩</author>
      <guid isPermaLink="true">https://dkan9634.tistory.com/224</guid>
      <comments>https://dkan9634.tistory.com/224#entry224comment</comments>
      <pubDate>Thu, 30 Nov 2023 01:21:34 +0900</pubDate>
    </item>
    <item>
      <title>[백준/BOJ][Python] 1744번 수 묶기</title>
      <link>https://dkan9634.tistory.com/223</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[백준/BOJ][Python] 1744번 수 묶기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1744&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/1744&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1701273066191&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;1744번: 수 묶기&quot; data-og-description=&quot;길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1744&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1744&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/CrY7y/hyUE9N88IG/dKDyz5e0AlLHgdMcN48fUk/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/1744&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1744&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/CrY7y/hyUE9N88IG/dKDyz5e0AlLHgdMcN48fUk/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;1744번: 수 묶기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;길이가 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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;281&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mItAf/btsA5eQfxkR/k5pGwBkOBL3kBEzBI18T6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mItAf/btsA5eQfxkR/k5pGwBkOBL3kBEzBI18T6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mItAf/btsA5eQfxkR/k5pGwBkOBL3kBEzBI18T6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmItAf%2FbtsA5eQfxkR%2Fk5pGwBkOBL3kBEzBI18T6K%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;1125&quot; height=&quot;281&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;281&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;아이디어&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;양수는 내림차순, 음수는 오름차순으로 정렬하고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1이면 그냥 더하기, 음수가 짝수개이면 음수끼리 곱해서 더하기, 음수가 홀수개인데 0이 있으면 0 곱해서 더하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 리스트에서 이미 더한거는 1002로 처리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런식으로 경우의 수를 모두 생각해서 풀었다!(정답코드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;근데 더 쉬운 풀이가 있어서 다른 방법으로도 풀어봤다!!(정답코드2)&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;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;코드&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;정답 1&lt;/b&gt;&lt;/h4&gt;
&lt;div style=&quot;background-color: #ffffff; color: #080808;&quot;&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;# 정답 코드 1
import sys
input = sys.stdin.readline

n = int(input())
arr = []
positive = []
negative = []
zero = False

arr = positive + negative
for _ in range(n):
    a = int(input())
    if a == 0: zero = True
    if a &amp;gt;= 0:
        positive.append(a)
    else:
        negative.append(a)
positive.sort(reverse=True)
negative.sort()
arr = positive + negative



result = 0
for i in range(n-1):
    if arr[i] &amp;gt; 0 and arr[i] &amp;lt; 1002: # 양수
        if arr[i+1] &amp;gt; 1 :
            result += (arr[i]*arr[i+1])
            arr[i], arr[i+1] = 1002, 1002
        else:
            result += arr[i]
            arr[i] = 1002

    elif arr[i] &amp;lt;= 0 and zero == False : # 음수
        if arr[i+1] &amp;lt; 0:
            result += (arr[i] * arr[i + 1])
            arr[i], arr[i + 1] = 1002, 1002

        else:
            result += arr[i]
            arr[i] = 0

    elif zero and arr[i] &amp;lt; 0:
        if arr[i+1] &amp;lt; 0:
            result += (arr[i] * arr[i + 1])
            arr[i], arr[i + 1] = 1002, 1002


if arr[-1] != 1002 and zero==False:
    print(result+arr[-1])
else:
    print(result)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;정답2)&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1701273731810&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 정답 코드 1
import sys
input = sys.stdin.readline

n = int(input())
positive_arr = []
negative_arr = [] # 0은 여기에 넣을 예정
result = 0

for _ in range(n):
    a = int(input())
    if a &amp;lt;= 0:
        negative_arr.append(a)
    elif a == 1: # 1이면 그냥 더하기
        result += 1
    else:
        positive_arr.append(a)

negative_arr.sort() # 음수는 오름차순
positive_arr.sort(reverse=True) # 양수는 내림차순

if len(positive_arr) %2 != 0:
    positive_arr.append(1)
if len(negative_arr)%2 != 0:
    negative_arr.append(1)

for i in range(0, len(positive_arr), 2):
    result += (positive_arr[i]*positive_arr[i+1])
for i in range(0, len(negative_arr), 2):
    result += (negative_arr[i]*negative_arr[i+1])
print(result)&lt;/code&gt;&lt;/pre&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;1은 어차피 곱해줘도 똑같으니 바로 더하고 리스트에 넣진 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드1처럼 음수는 오름차순, 양수는 내림차순으로 정렬한다. 이때 0은 음수 리스트에 넣었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 이유는 음수가 홀수개면 0을 곱해서 없애버리기 위해서이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;양수나 음수리스트가 홀수개이면 각 리스트 맨 뒤에 1을 넣는다.(어차피 1은 곱하나마나 똑같으니)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 값 두 개를 곱해가면서 result에 더해준다!&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;571&quot; data-origin-height=&quot;140&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PNPK8/btsA9QALWeX/NdhJWDdnKt8A3sC2RUTcn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PNPK8/btsA9QALWeX/NdhJWDdnKt8A3sC2RUTcn1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PNPK8/btsA9QALWeX/NdhJWDdnKt8A3sC2RUTcn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPNPK8%2FbtsA9QALWeX%2FNdhJWDdnKt8A3sC2RUTcn1%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;571&quot; height=&quot;140&quot; data-origin-width=&quot;571&quot; data-origin-height=&quot;140&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 코드를 비교해보면 메모리, 시간측면에서는 똑같다 걍 코드 길이 차이인듯&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;둘 다 O(n)&lt;/p&gt;</description>
      <category>Algorithm/알고리즘 문제</category>
      <author>은 딩</author>
      <guid isPermaLink="true">https://dkan9634.tistory.com/223</guid>
      <comments>https://dkan9634.tistory.com/223#entry223comment</comments>
      <pubDate>Thu, 30 Nov 2023 01:06:39 +0900</pubDate>
    </item>
    <item>
      <title>[백준/BOJ][Python] 12847번 꿀 아르바이트</title>
      <link>https://dkan9634.tistory.com/222</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[백준/BOJ][Python] 12847번 꿀 아르바이트&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/12847&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/12847&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1700916602435&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;12847번: 꿀 아르바이트&quot; data-og-description=&quot;월세를 내기 바로 전 날 까지 인 n (1&amp;nbsp;&amp;le; n &amp;le;&amp;nbsp;100,000) 일과 일을 할 수 있는 날 m (0 &amp;le;&amp;nbsp;m &amp;le;&amp;nbsp;n) 일이 주어진다. 그 다음 줄 에는 1일부터 n일 까지 일급 Ti가 순서대로 주어진다. (0 &amp;lt; Ti &amp;le;&amp;nbsp;1,000,000)&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/12847&quot; data-og-url=&quot;https://www.acmicpc.net/problem/12847&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/y6ux1/hyUB7KjSqz/eHVaerqi4DeGiAPFcNxjdK/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/12847&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/12847&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/y6ux1/hyUB7KjSqz/eHVaerqi4DeGiAPFcNxjdK/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;12847번: 꿀 아르바이트&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;월세를 내기 바로 전 날 까지 인 n (1&amp;nbsp;&amp;le; n &amp;le;&amp;nbsp;100,000) 일과 일을 할 수 있는 날 m (0 &amp;le;&amp;nbsp;m &amp;le;&amp;nbsp;n) 일이 주어진다. 그 다음 줄 에는 1일부터 n일 까지 일급 Ti가 순서대로 주어진다. (0 &amp;lt; Ti &amp;le;&amp;nbsp;1,000,000)&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;1298&quot; data-origin-height=&quot;302&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOIRFj/btsAQfa8KNx/9L3RiGh4bruXZnCTKmFLe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOIRFj/btsAQfa8KNx/9L3RiGh4bruXZnCTKmFLe0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOIRFj/btsAQfa8KNx/9L3RiGh4bruXZnCTKmFLe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOIRFj%2FbtsAQfa8KNx%2F9L3RiGh4bruXZnCTKmFLe0%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;1298&quot; height=&quot;302&quot; data-origin-width=&quot;1298&quot; data-origin-height=&quot;302&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;아이디어&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;누적합으로 푼 문제이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시 1번 10 20 30 20 10 에서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;누적합은 0 10 30 60 80 90이 되고 m은 3이므로 숫자 3개만 더해서 최대값을 찾아야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 2번째에서 4번째까지의 합을 알고싶다면 4번쨰 누적합에서 첫번째 누적합을 뺴면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; (10 + 20 + 30 + 20 ) - 10&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;코드&lt;/h2&gt;
&lt;pre id=&quot;code_1700916654370&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
input = sys.stdin.readline

n, m = map(int, input().split())
arr = list(map(int, input().split()))
prefix = [0]*(n+1)

# 누적합
for i in range(n):
    prefix[i+1] = prefix[i] + arr[i]

max = 0
for i in range(n-m+1):
    if max &amp;lt; prefix[i+m] - prefix[i]:
        max = prefix[i+m] - prefix[i]

print(max)&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Algorithm/알고리즘 문제</category>
      <author>은 딩</author>
      <guid isPermaLink="true">https://dkan9634.tistory.com/222</guid>
      <comments>https://dkan9634.tistory.com/222#entry222comment</comments>
      <pubDate>Sat, 25 Nov 2023 21:54:15 +0900</pubDate>
    </item>
    <item>
      <title>[백준/BOJ][Python] 23827번 수열 (Easy)</title>
      <link>https://dkan9634.tistory.com/221</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[백준/BOJ][Python] 23827번 수열 (Easy)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/23827&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/23827&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1700916474398&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;23827번: 수열 (Easy)&quot; data-og-description=&quot;모든 원소가 양의 정수이고, 길이가 $N$인 수열 $A_1, A_2, ..., A_N$이 주어진다. $1 \le i &amp;lt; j \le&amp;nbsp;N$을 만족하는 모든 정수쌍 $(i, j)$에 대해 $A_i \times A_j$의 합을 $1\, 000 \, 000 \, 007$로 나눈 나머지를 구하시&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/23827&quot; data-og-url=&quot;https://www.acmicpc.net/problem/23827&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/XfXHi/hyUB2hZDtK/HdSLSU4iCGIMc70VK2Gpk0/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/23827&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/23827&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/XfXHi/hyUB2hZDtK/HdSLSU4iCGIMc70VK2Gpk0/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;23827번: 수열 (Easy)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;모든 원소가 양의 정수이고, 길이가 $N$인 수열 $A_1, A_2, ..., A_N$이 주어진다. $1 \le i &amp;lt; j \le&amp;nbsp;N$을 만족하는 모든 정수쌍 $(i, j)$에 대해 $A_i \times A_j$의 합을 $1\, 000 \, 000 \, 007$로 나눈 나머지를 구하시&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1348&quot; data-origin-height=&quot;270&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JxRnN/btsASoSPQp1/ZWukk6ulGNPmDRCzfrhJk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JxRnN/btsASoSPQp1/ZWukk6ulGNPmDRCzfrhJk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JxRnN/btsASoSPQp1/ZWukk6ulGNPmDRCzfrhJk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJxRnN%2FbtsASoSPQp1%2FZWukk6ulGNPmDRCzfrhJk0%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;1348&quot; height=&quot;270&quot; data-origin-width=&quot;1348&quot; data-origin-height=&quot;270&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;아이디어&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://dkan9634.tistory.com/220&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://dkan9634.tistory.com/220&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1700916523700&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[백준/BOJ][Python] 13900번 순서쌍의 곱의 합&quot; data-og-description=&quot;[백준/BOJ][Python] 13900번 순서쌍의 곱의 합 https://www.acmicpc.net/problem/13900 13900번: 순서쌍의 곱의 합 첫 번째 줄에는 입력 받을 정수의 개수 N(2 &amp;le; N &amp;le; 100,000) 두 번째 줄에는 N 개의 정수가 주어진다. &quot; data-og-host=&quot;dkan9634.tistory.com&quot; data-og-source-url=&quot;https://dkan9634.tistory.com/220&quot; data-og-url=&quot;https://dkan9634.tistory.com/220&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bFJtXU/hyUB74Cygi/DV4mcuIn7IEDqtPK9WjeoK/img.png?width=800&amp;amp;height=167&amp;amp;face=0_0_800_167,https://scrap.kakaocdn.net/dn/NIXE8/hyUB2CgvDW/ey37VWCrGPdc6qsomMysC1/img.png?width=800&amp;amp;height=167&amp;amp;face=0_0_800_167,https://scrap.kakaocdn.net/dn/b0SyhY/hyUB8vH8cA/KKKv7s29C5N30Ae1hvDD7K/img.png?width=1321&amp;amp;height=277&amp;amp;face=0_0_1321_277&quot;&gt;&lt;a href=&quot;https://dkan9634.tistory.com/220&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://dkan9634.tistory.com/220&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bFJtXU/hyUB74Cygi/DV4mcuIn7IEDqtPK9WjeoK/img.png?width=800&amp;amp;height=167&amp;amp;face=0_0_800_167,https://scrap.kakaocdn.net/dn/NIXE8/hyUB2CgvDW/ey37VWCrGPdc6qsomMysC1/img.png?width=800&amp;amp;height=167&amp;amp;face=0_0_800_167,https://scrap.kakaocdn.net/dn/b0SyhY/hyUB8vH8cA/KKKv7s29C5N30Ae1hvDD7K/img.png?width=1321&amp;amp;height=277&amp;amp;face=0_0_1321_277');&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;[백준/BOJ][Python] 13900번 순서쌍의 곱의 합&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[백준/BOJ][Python] 13900번 순서쌍의 곱의 합 https://www.acmicpc.net/problem/13900 13900번: 순서쌍의 곱의 합 첫 번째 줄에는 입력 받을 정수의 개수 N(2 &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;dkan9634.tistory.com&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;백준 13900번과 99% 같은 문제이다!!&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;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;코드&lt;/h2&gt;
&lt;pre id=&quot;code_1700916507471&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
input = sys.stdin.readline

n = int(input())
arr = list(map(int, input().split()))
prefix = [0]*n
# 뒤부터 누적합
for i in range(n-1, 0, -1):
    prefix[n-i] = prefix[n-i-1] + arr[i]

sum = 0
for i in range(n-1):
    sum += arr[i] * prefix[len(prefix)-1-i]
print(sum%1000000007)&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Algorithm/알고리즘 문제</category>
      <author>은 딩</author>
      <guid isPermaLink="true">https://dkan9634.tistory.com/221</guid>
      <comments>https://dkan9634.tistory.com/221#entry221comment</comments>
      <pubDate>Sat, 25 Nov 2023 21:49:10 +0900</pubDate>
    </item>
    <item>
      <title>[백준/BOJ][Python] 13900번 순서쌍의 곱의 합</title>
      <link>https://dkan9634.tistory.com/220</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[백준/BOJ][Python] 13900번 순서쌍의 곱의 합&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/13900&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/13900&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1700915999709&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;13900번: 순서쌍의 곱의 합&quot; data-og-description=&quot;첫 번째 줄에는 입력 받을 정수의 개수 N(2 &amp;le; N &amp;le; 100,000) 두 번째 줄에는 N 개의 정수가 주어진다. 이때 입력 받는 정수들의 범위는 0이상 10,000 이하이다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/13900&quot; data-og-url=&quot;https://www.acmicpc.net/problem/13900&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/O0PLT/hyUB65KoGt/2EKIce9PPBNQ6rhQz3EAQ0/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/13900&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/13900&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/O0PLT/hyUB65KoGt/2EKIce9PPBNQ6rhQz3EAQ0/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;13900번: 순서쌍의 곱의 합&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫 번째 줄에는 입력 받을 정수의 개수 N(2 &amp;le; N &amp;le; 100,000) 두 번째 줄에는 N 개의 정수가 주어진다. 이때 입력 받는 정수들의 범위는 0이상 10,000 이하이다.&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1321&quot; data-origin-height=&quot;277&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/A43GL/btsATX0XuPx/UvkPHyAOe9BMFDnvvq0Ii0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/A43GL/btsATX0XuPx/UvkPHyAOe9BMFDnvvq0Ii0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/A43GL/btsATX0XuPx/UvkPHyAOe9BMFDnvvq0Ii0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA43GL%2FbtsATX0XuPx%2FUvkPHyAOe9BMFDnvvq0Ii0%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;1321&quot; height=&quot;277&quot; data-origin-width=&quot;1321&quot; data-origin-height=&quot;277&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;아이디어&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제를 보자마자&lt;/p&gt;
&lt;pre id=&quot;code_1700916027367&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
input = sys.stdin.readline

n = int(input())
arr = list(map(int, input().split()))
sum = 0

for i in range(n-1):
    for j in range(i+1, n):
        sum += arr[i]*arr[j]
  
print(sum)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 풀었는데 시간 초과가 나와서 누적합으로 풀어야한다는 걸 깨달았다.&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;2 3 4가 주어지면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2*3 + 2*4 + 3*4가 답인데 얘네를 묶으면 2(3+4) + 3*4가 된다.&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;1 2 3 4가 주어졌을 때 누적합을 뒤에서부터 구하면 0 4 7 9&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3*4 + 2*7 + 1*9 가 정답이 된다.&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;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;코드&lt;/h2&gt;
&lt;pre id=&quot;code_1700916386271&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
input = sys.stdin.readline

n = int(input())
arr = list(map(int, input().split()))
prefix = [0]*(n)

# 뒤부터 누적합
for i in range(n-1, 0, -1):
    prefix[n-i] = prefix[n-i-1] + arr[i]
    
sum = 0
for i in range(n):
    sum += arr[i]*prefix[len(prefix)-i-1]
print(sum)&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Algorithm/알고리즘 문제</category>
      <author>은 딩</author>
      <guid isPermaLink="true">https://dkan9634.tistory.com/220</guid>
      <comments>https://dkan9634.tistory.com/220#entry220comment</comments>
      <pubDate>Sat, 25 Nov 2023 21:46:32 +0900</pubDate>
    </item>
  </channel>
</rss>