<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>몰입하는 개발자 준비생</title>
    <link>https://studyiwthme.tistory.com/</link>
    <description>전공자이지만 비전공자와 같은 실력을 가졌습니다.
아직 개발자 준비생이지만, 제 글이 단 한 분이라도 
도움이 됐으면 좋겠어서 블로그를 시작합니다.</description>
    <language>ko</language>
    <pubDate>Tue, 14 Apr 2026 14:03:33 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>몰입하는로건</managingEditor>
    <image>
      <title>몰입하는 개발자 준비생</title>
      <url>https://tistory1.daumcdn.net/tistory/6759830/attach/576195da591f487296310ef2ef50ab62</url>
      <link>https://studyiwthme.tistory.com</link>
    </image>
    <item>
      <title>[Python] BOJ 1018 체스판 다시 칠하기</title>
      <link>https://studyiwthme.tistory.com/237</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 요구사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시간 제한: 2초&lt;/li&gt;
&lt;li&gt;메모리제한: 128MB&lt;/li&gt;
&lt;li&gt;보드 안에서 시작 가능한 모든 8x8 시작 위치를 고르고&lt;/li&gt;
&lt;li&gt;w로 시작 체스판과 비교했을 때, 다시 칠해야 하는 칸 수&lt;/li&gt;
&lt;li&gt;b로 시작 체스판과 비교했을 때, 다시 칠해야 하는 칸 수&lt;/li&gt;
&lt;li&gt;둘 다 계산해서 더 작은 값만 취함.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 설계&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;N, M 을 입력 받는다.&lt;/li&gt;
&lt;li&gt;board 를 입력 받아 초기화한다.&lt;/li&gt;
&lt;li&gt;answer = 64
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;최대로 다시 칠해야 하는 경우의 수는 64번이다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;최대 8x8 이니&lt;/li&gt;
&lt;li&gt;시작점 i, j의 범위는 (N - 7) (M - 7)&amp;nbsp;&lt;/li&gt;
&lt;li&gt;- 7 인 이유&amp;nbsp;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시작인덱스는 0 ~ 전체길이 -8 까지 가능&lt;/li&gt;
&lt;li&gt;0을 포함해야 하기 때문에 -7&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;cnt_w = 0, cnt_b = 0
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시작점마다 w, b 각각 칠해야하는 경우의 수를 카운트한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;이제 각 시작점 마다 돌아야한다.&lt;/li&gt;
&lt;li&gt;현재 위치 r, c 의 범위는 (i, i +8) 과 (j, j + 8):&lt;/li&gt;
&lt;li&gt;시작점으로부터 끝까지 순회하면서, 짝수와 홀수인 경우를 생각한다.&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;짝수인 경우 무조건 시작점과 색깔이 같아야 한다.&amp;nbsp;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;if 현재 위치 != 'W':&amp;nbsp; # 시작점이 w든 b든 같다. 헷갈리면 시작점이 W라고 생각하면 된다.&amp;nbsp; 그럼 시작점과 색이 다르니 W칠해줘야지
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;cnt_w += 1&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;if 현재 위치 != 'B':
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;cnt_b += 1&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;홀수인 경우 무조건 시작점과 색깔이 달라야 한다.&amp;nbsp;시작 가능한 위치를 고른다.&amp;nbsp;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;else:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;if 현재 위치 != 'W':&amp;nbsp; #이 때도 시작점이 W이면 홀수는 B여야한다.&amp;nbsp;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;cnt_b += 1:&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;if 현재위치 != 'B':
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;cnt_w += 1&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1825&quot; data-origin-height=&quot;1546&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/B4e3A/dJMcagKMS2e/MPJpOmLkqJkYteI31yyVI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/B4e3A/dJMcagKMS2e/MPJpOmLkqJkYteI31yyVI1/img.png&quot; data-alt=&quot;시작점과 현재위치가 짝수면 같고 홀수면 다름을 시각적으로 보여주는 자료&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/B4e3A/dJMcagKMS2e/MPJpOmLkqJkYteI31yyVI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB4e3A%2FdJMcagKMS2e%2FMPJpOmLkqJkYteI31yyVI1%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;738&quot; height=&quot;984&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1825&quot; data-origin-height=&quot;1546&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;시작점과 현재위치가 짝수면 같고 홀수면 다름을 시각적으로 보여주는 자료&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;answer = min(answer, cnt_w, cnt+b) 하여 최소 칠해야 되는 경우의 수를 찾는다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 구현&lt;/h3&gt;
&lt;pre id=&quot;code_1765245165039&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;N, M = map(int, input().split())
board = [input().strip() for _ in range(N)]

answer = 64 # 최대 다시 칠해야 하는 경우의 수느 64를 넘길 수 없다.

# i, j 는 8x8 체스판이 시작 가능한 위치
for i in range(N-7):
    for j in range(M-7):
        # 시작점에서 0으로 초기화
        cnt_w, cnt_b= 0, 0
        for r in range(i, i+8):
            for c in range(j, j+8):
                cur = board[r][c]
                if (r + c) % 2 == 0: # 짝수, 시작점과 같아야 함.
                    if cur != 'W':
                        cnt_w += 1
                    if cur != 'B':
                        cnt_b += 1
                else: # 홀수, 시작점과 달라야함
                    if cur != 'W':
                        cnt_b += 1
                    if cur != 'B':
                        cnt_w += 1
        answer = min(answer, cnt_b, cnt_w) # 각 시작점마다 칠해야 되는 최소 개수를 구함.

print(answer)&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 생각해볼 문제&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 다중 for문 시간제한 2초 괜찮았을 까?&amp;nbsp;&lt;/p&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;p data-ke-size=&quot;size16&quot;&gt;여기서 N, M 은 최대 8 ~ 50이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시작점 마다 64번 검사&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;64 * (N - 7) * (M - 7)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;64는 상수 -7도 상수 이므로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대략적으로 O(NM) 이다. N,M이 최대일 때, 시간 복잡도는 O(N^2) 이 된다.&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;64 * (50 -7) * (50 -7) = 118,336번 으로 여유있다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>1018</category>
      <category>BOJ</category>
      <category>Python</category>
      <category>백준</category>
      <category>체스판 다시 칠하기</category>
      <category>파이썬</category>
      <author>몰입하는로건</author>
      <guid isPermaLink="true">https://studyiwthme.tistory.com/237</guid>
      <comments>https://studyiwthme.tistory.com/237#entry237comment</comments>
      <pubDate>Tue, 9 Dec 2025 11:00:24 +0900</pubDate>
    </item>
    <item>
      <title>[Python] BOJ 19532 수학은 비대면강의입니다</title>
      <link>https://studyiwthme.tistory.com/236</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 요구사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시간 제한: 1초&amp;nbsp;&lt;/li&gt;
&lt;li&gt;메모리 제한 1024MB&amp;nbsp;&lt;/li&gt;
&lt;li&gt;주어진 수로 x, y 값을 구해라.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 설계&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;6개의 문자값을 받는다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;이중 for문으로 x와 y값을 찾아낸다. ( 시간복잡도의 경우 O(n**2) 이겠지만, 모든 연산을 다해도 4,000,000 &lt;b&gt;안전&lt;/b&gt; )&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 구현&lt;/h3&gt;
&lt;pre id=&quot;code_1764815844268&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
input = lambda : sys.stdin.readline().rstrip()

a, b, c, d, e, f = map(int, input().split())

for x in range(-999, 1000):
    for y in range(-999, 1000):
         if (a * x + b * y == c) and (d * x + e* y == f):
             print(x, y)
             break&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위와 같은 경우는 x, y 값을 찾아 print 해도 y루프만 종료되고 &lt;b&gt;x 루프는 계속 돈다.&amp;nbsp;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;두 가지&lt;/b&gt; 해결 방법이 있다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;break 대신 &lt;b&gt;exit()&lt;/b&gt; 사용해 프로그램을 종료시킨다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;flag 변수&lt;/b&gt;로 제어한다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1764815926307&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;found = False

for x in range(-999, 1000):
    for y in range(-999, 1000):
        if (a * x + b * y == c) and (d * x + e* y == f):
            print(x, y)
            found =True
            break
    if found:
        break&lt;/code&gt;&lt;/pre&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;p data-ke-size=&quot;size16&quot;&gt;왜 flage 변수는 바깥에 있어야 할까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 개의 for문 바깥에서 한 번만 선언한 함수. 즉, &lt;b&gt;found 값이 두 루프 전체에 공유&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>코딩테스트/백준</category>
      <category>19532</category>
      <category>BOJ</category>
      <category>백준</category>
      <category>수학은비대면강의입니다</category>
      <category>코테</category>
      <category>파이썬</category>
      <author>몰입하는로건</author>
      <guid isPermaLink="true">https://studyiwthme.tistory.com/236</guid>
      <comments>https://studyiwthme.tistory.com/236#entry236comment</comments>
      <pubDate>Thu, 4 Dec 2025 11:40:46 +0900</pubDate>
    </item>
    <item>
      <title>[Python] BOJ 15596 정수 N개의 합</title>
      <link>https://studyiwthme.tistory.com/235</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;요구사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시간 제한: 0.1초&lt;/li&gt;
&lt;li&gt;메모리 제한: 512MB&lt;/li&gt;
&lt;li&gt;정수 n개가 주어졌을 때, n개의 합을 구하는 함수를 작성&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문제 이해&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;def solve(a: list): 라는 함수를 짜야함.&lt;/li&gt;
&lt;li&gt;예를 들어, a = [1, 2, 3] 이라면 solve() 는 이들의 합인 6을 return&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;설계&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리스트를 순회하며, 이들의 합을 구함.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;구현&lt;/h3&gt;
&lt;pre id=&quot;code_1745309642977&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ef solve(a: list):
    total = 0
    for num in a:
        total += num

    return total

# a = [1, 2, 3]

# print(solve(a))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/백준</category>
      <category>15596</category>
      <category>BOJ</category>
      <category>Python</category>
      <category>백준</category>
      <category>정수 N개의 합</category>
      <category>파이썬</category>
      <author>몰입하는로건</author>
      <guid isPermaLink="true">https://studyiwthme.tistory.com/235</guid>
      <comments>https://studyiwthme.tistory.com/235#entry235comment</comments>
      <pubDate>Tue, 22 Apr 2025 17:14:31 +0900</pubDate>
    </item>
    <item>
      <title>[Python] BOJ 2562 최댓값</title>
      <link>https://studyiwthme.tistory.com/234</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;요구사항&amp;nbsp;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시간 제한: 1초&lt;/li&gt;
&lt;li&gt;메모리 제한: 128MB&lt;/li&gt;
&lt;li&gt;주어진 9개의 숫자들 중 최댓값을 찾고, 최댓값이 몇 번째 수인지 구해라.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;설계&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;주어진 범위의 크기가 매우 작으므로 시간과 메모리의 제한은 무의미하다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;입력 받은 9개의 수를 리스트에 저장.&lt;/li&gt;
&lt;li&gt;리스트를 순회하며 최댓값을 갱신.&lt;/li&gt;
&lt;li&gt;갱신됐다면 현재 몇 번째 인지 저장.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;구현&lt;/h3&gt;
&lt;pre id=&quot;code_1745308477780&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
input = lambda: sys.stdin.readline().rstrip()

how_many_nums = 9
max_num = 0
count = 0

num_list = [int(input()) for _ in range(how_many_nums)]

# print(num_list)

for i in range(how_many_nums):
    # print(i)
    max_num = max(max_num, num_list[i])

    if max_num == num_list[i]:
        count = i + 1

print(max_num)
print(count)&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;GPT 리팩토링&amp;nbsp;&lt;/h3&gt;
&lt;pre id=&quot;code_1745308539492&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
input = lambda: sys.stdin.readline().rstrip()

nums = [int(input()) for _ in range(9)]

max_num = max(nums)
index = nums.index(max_num) + 1

print(max_num)
print(index)&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;max() 내장함수를 반복 가능한 객체면 다 들어갈 수 있다. 단, 딕서녀리의 경우 key 지정 없이 비교할 수 없다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>코딩테스트/백준</category>
      <category>2562</category>
      <category>Python</category>
      <category>백준</category>
      <category>최댓값</category>
      <author>몰입하는로건</author>
      <guid isPermaLink="true">https://studyiwthme.tistory.com/234</guid>
      <comments>https://studyiwthme.tistory.com/234#entry234comment</comments>
      <pubDate>Tue, 22 Apr 2025 17:10:45 +0900</pubDate>
    </item>
    <item>
      <title>[Python] BOJ 2739 구구단</title>
      <link>https://studyiwthme.tistory.com/232</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;요구사항&lt;/h3&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;h3 data-ke-size=&quot;size23&quot;&gt;설계&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;숫자를 입력 받아 해당 숫자에 해당하는 구구단을 출력한다.&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;구현 1&lt;/h3&gt;
&lt;pre id=&quot;code_1745307103180&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().rstrip()

n = int(input())
end_num = 9

for mul_num in range(end_num):
    print(n, '*', mul_num, '=', n * mul_num)&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실수 1&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1296&quot; data-origin-height=&quot;348&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baInRy/btsNuKBDxe1/oz461VK1OEFniBZjMvBCf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baInRy/btsNuKBDxe1/oz461VK1OEFniBZjMvBCf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baInRy/btsNuKBDxe1/oz461VK1OEFniBZjMvBCf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaInRy%2FbtsNuKBDxe1%2Foz461VK1OEFniBZjMvBCf1%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;1296&quot; height=&quot;348&quot; data-origin-width=&quot;1296&quot; data-origin-height=&quot;348&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;라인 4에서 str 은 callable 할 수 없다한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;input 이라는 변수에 str 을 저장함.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;근데 문자열을 함수처럼 불러 생긴 오류&amp;nbsp;&lt;/li&gt;
&lt;li&gt;lambda: . . .를 붙여 해결한다.&amp;nbsp;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위 뜻은 input을 함수처럼 다시 만든 것.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실수 2&lt;/h3&gt;
&lt;pre id=&quot;code_1745307563187&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 입력
2

# 출력 결과
2 * 0 = 0
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구구단의 시작과 끝이 문제의 의도와 다르다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;최종 구현&amp;nbsp;&lt;/h3&gt;
&lt;pre id=&quot;code_1745307607288&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
input = lambda : sys.stdin.readline().rstrip()

n = int(input())

end_num = 10

for mul_num in range(1, end_num):
    print(n, '*', mul_num, '=', n * mul_num)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;지난 번의 제출 및 회고&lt;/h3&gt;
&lt;pre id=&quot;code_1745307649374&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;n = input()

for i in range(1,10):
    print(f'{n} * {i} = {int(n)*i}')&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;재사용성만 본다면 처음이 낫지만 f-string 사용법을 다시금 상기되서 좋다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>코딩테스트/백준</category>
      <category>2739</category>
      <category>Python</category>
      <category>구구단</category>
      <category>백준</category>
      <author>몰입하는로건</author>
      <guid isPermaLink="true">https://studyiwthme.tistory.com/232</guid>
      <comments>https://studyiwthme.tistory.com/232#entry232comment</comments>
      <pubDate>Tue, 22 Apr 2025 16:42:06 +0900</pubDate>
    </item>
    <item>
      <title>[Python] BOJ 2798 블랙잭</title>
      <link>https://studyiwthme.tistory.com/231</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;총 걸린 시간&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1631-1641&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;요구사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시간 제한: 1초&lt;/li&gt;
&lt;li&gt;메모리 제한: 128MB&lt;/li&gt;
&lt;li&gt;N장의 카드 중 3장의 카드의 합이 최대한 M과 가까운 숫자들의 합을 구해라.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;3장을 찾을 수 있는 경우만 입력으로 주어진다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;설계&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;combinations 라이브러리를 불러와 3장의 조합을 구한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;조합을 돌며 조합의 합이 M 보다 작을 때, 체크하며 가장 큰 값을 구한다.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;구현&lt;/h3&gt;
&lt;pre id=&quot;code_1742975211852&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from itertools import combinations
import sys
input = lambda : sys.stdin.readline().rstrip()

N, M = map(int, input().split())
numbers = map(int, input().split())

num_list = list(combinations(numbers, 3))

max_num = 0
for  combination in num_list:
    if sum(combination) &amp;lt;= M:
        max_num = max(max_num, sum(combination))

print(max_num)&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2025.12.03 다시 풀이&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;설계&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;조합 사용법을 까먹었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;1. 모든 경우의 수를 다 구한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;2. 최종 보스만 남긴다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1764726431314&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;N, M = map(int, input().split())
# print(N,M)
num_list = list(map(int, input().split()))
# print(num_list)
max_num = 0
# 조합을 모를 떄.
for i in range(N):
    for j in range(i+1, N):
        for k in range(j+1, N):
            sum = num_list[i]+num_list[j] + num_list[k]
            if sum &amp;gt; M:
                continue
            else:
                max_num = max(sum, max_num)

print(max_num)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/백준</category>
      <category>2798</category>
      <category>BOJ</category>
      <category>Python</category>
      <category>블랙잭</category>
      <author>몰입하는로건</author>
      <guid isPermaLink="true">https://studyiwthme.tistory.com/231</guid>
      <comments>https://studyiwthme.tistory.com/231#entry231comment</comments>
      <pubDate>Wed, 26 Mar 2025 16:47:31 +0900</pubDate>
    </item>
    <item>
      <title>[Python] BOJ 2231 분해합</title>
      <link>https://studyiwthme.tistory.com/230</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;총 걸린 시간&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1254 - 1310 (16min)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;요구사항&amp;nbsp;&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;시간 제한: 2초&lt;/li&gt;
&lt;li&gt;메모리 제한: 192MB&lt;/li&gt;
&lt;li&gt;자연수 N의 가장 작은 생성자를 구하라.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;설계&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;브루트 포스를 해야 된다 생각했다. 그 이유는 그 경우의 수 말고 방법이 안보인다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;해당 문제의 경우 생성자가 여러 개인 자연수도 있을 수 있고 없을 수 있다 했다. 하지만 이 두 가지 경우에 어떻게 출력해라 명시되어 있지 않으므로 임의로 가장 작은 생성자를 찾으면 프로그램을 종료하도록, 생성자를 찾지 못하면 0을 출력하도록 설계했다.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;구현&lt;/h3&gt;
&lt;pre id=&quot;code_1742962891513&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys

input = lambda: sys.stdin.readline().rstrip()

N = int(input())

# N의 가장 작은 생성자를 찾기 위한 브루트포스
for i in range(1, N + 1):
    # 각 숫자의 분해합을 계산
    sums = i + sum(int(digit) for digit in str(i))

    # 생성자를 찾으면 출력하고 종료
    if sums == N:
        print(i)
        exit()

# 생성자가 없으면 0 출력
print(0)&lt;/code&gt;&lt;/pre&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;p data-ke-size=&quot;size16&quot;&gt;2025.12.03 재풀이&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1764733542689&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;N = int(input())
answer = 0

for i in range(1, N + 1 ): # 자연수임으로 1부터 시작. N을 포함해야하니 N + 1
    result = i 
    for digit in str(result):
        result += int(digit) # result == 분해합 
    if result == N: # i의 분해합의 결과가 N이라면 
        answer = i
        break

print(answer # 만약 if문에 걸리지 않았더라면 anwser == 0 을 출력할 것. 기존의 exit()은 코테에서 지양할 것&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;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;p data-ke-size=&quot;size16&quot;&gt;위에서 시간 복잡도는 어떻게 될까?&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 첫 번째 for문은 O(N)의 시간복잡도를 갖는다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 번째 for문은 O(logN)의 시간복잡도를 갖는다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 이유는 한 자리의 시간복잡도는 9개&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두자리의 시간복잡도는 10 ~ 99 90개&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N = 10^k -1&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;k = logN&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;따라서 O(NlogN)의 시간복잡도를 갖는다.&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 코드의 범위를 줄여보자. Hint 분해합은 너무 작은 수로는 될 수 없다.&amp;nbsp;&lt;/p&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;p data-ke-size=&quot;size16&quot;&gt;한 자리의 최대는 9&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 자리의 최대는 18 (99)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세 자리의 최대는 27 (999) 이다.&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;N(분해합) = 256 이라고 해보자.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;M(생성자) + (각 자리의 합) = N 이다.&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;각 자리의 합의 최대는 27이다.&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;N(256) - 27 = 229 부터 생성자를 찾으면 된다.&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;200 + (2 + 0 + 0) = 202&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;217 + (2 + 1 + 7) = 237&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;위 처럼 너무 작은 수로는 분해합에 도달할 수 없다. 따라서 분해합에서 최대크기(여기선 27)을 뺀 수 부터 찾으면 된다.&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;완성된 코드&lt;/p&gt;
&lt;pre id=&quot;code_1764734348536&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;N = int(input())
start = max(1, N - len(str(N)) * 9)
answer = 0

for i in range(start, N + 1):
    result = i
    for digit in str(i):
        result += int(digit)
    if result == N:
        answer = i
        break

print(answer)&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;818&quot; data-origin-height=&quot;111&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Jn1zb/dJMcagDZ3bp/qjA09gq988kgtmxEdMEv60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Jn1zb/dJMcagDZ3bp/qjA09gq988kgtmxEdMEv60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Jn1zb/dJMcagDZ3bp/qjA09gq988kgtmxEdMEv60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJn1zb%2FdJMcagDZ3bp%2FqjA09gq988kgtmxEdMEv60%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;818&quot; height=&quot;111&quot; data-origin-width=&quot;818&quot; data-origin-height=&quot;111&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>코딩테스트/백준</category>
      <category>2231</category>
      <category>BOJ</category>
      <category>Python</category>
      <category>백준</category>
      <category>분해합</category>
      <author>몰입하는로건</author>
      <guid isPermaLink="true">https://studyiwthme.tistory.com/230</guid>
      <comments>https://studyiwthme.tistory.com/230#entry230comment</comments>
      <pubDate>Wed, 26 Mar 2025 13:23:29 +0900</pubDate>
    </item>
    <item>
      <title>[AICE] AI 자격증 도전기 2탄</title>
      <link>https://studyiwthme.tistory.com/229</link>
      <description>&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;a href=&quot;https://studyiwthme.tistory.com/228&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;왜 자격증을 따기로 했을까?&lt;/a&gt;&lt;/blockquote&gt;
&lt;figure id=&quot;og_1742198896904&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;[AICE] AI 자격증 도전기 1탄&quot; data-og-description=&quot;AICE 란? 위 링크 들어가면 자세히 볼 수 있다.&amp;nbsp;왜 따려고 하는 가?비트코인은 못 탔지만, AI 코인은 타고 싶기 때문이다. 정글 때 멘토님께서 AI쪽이셔서 AI 관련 이야기를 듣다보니 모르면 뒤쳐지&quot; data-og-host=&quot;studyiwthme.tistory.com&quot; data-og-source-url=&quot;https://studyiwthme.tistory.com/228&quot; data-og-url=&quot;https://studyiwthme.tistory.com/228&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b0KqjZ/hyYr0m0TxZ/IYGm5KB3h36npsYkoUlGlk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bWk59E/hyYqbvU3KE/8a6gdkMeO9g0yYhaq8Tn71/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://studyiwthme.tistory.com/228&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://studyiwthme.tistory.com/228&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b0KqjZ/hyYr0m0TxZ/IYGm5KB3h36npsYkoUlGlk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bWk59E/hyYqbvU3KE/8a6gdkMeO9g0yYhaq8Tn71/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&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;[AICE] AI 자격증 도전기 1탄&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;AICE 란? 위 링크 들어가면 자세히 볼 수 있다.&amp;nbsp;왜 따려고 하는 가?비트코인은 못 탔지만, AI 코인은 타고 싶기 때문이다. 정글 때 멘토님께서 AI쪽이셔서 AI 관련 이야기를 듣다보니 모르면 뒤쳐지&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;studyiwthme.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aice.study/front/edus/EDUCATION/detail/200000036&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;아래 내용 출처 및 학습 링크&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1742198944952&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;AICE&quot; data-og-description=&quot;KT가 개발하여 한국경제신문과 함께 주관하는 인공지능 능력시험입니다.&quot; data-og-host=&quot;aice.study&quot; data-og-source-url=&quot;https://aice.study/front/edus/EDUCATION/detail/200000036&quot; data-og-url=&quot;https://aice.study/front/edus/EDUCATION/detail/200000036&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://aice.study/front/edus/EDUCATION/detail/200000036&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aice.study/front/edus/EDUCATION/detail/200000036&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;AICE&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;KT가 개발하여 한국경제신문과 함께 주관하는 인공지능 능력시험입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aice.study&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;이 글을 보면 안되는 사람 정의해드림.&amp;nbsp;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인공지능, Train/Test, 지도학습, validation, Feature, Label, 강화학습, 분류, CNN, 과적합, AI 모델, 데이터전처리, 알고리즘, DNN, 빅데이터, 회귀, 머신러닝, 비지도학습, 딥러닝, GPU, 예측&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;위 단어에 대해 &lt;b&gt;10개 이상 단어&lt;/b&gt;를 알고 있다.&lt;/li&gt;
&lt;li&gt;위 단어에 대해&lt;b&gt; 15개 이상 단어를 알고 있으며, 각 의미에 대해 설명이 가능&lt;/b&gt;하다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 2가지에 해당 되는 사람은 &lt;a href=&quot;https://minyeong3.tistory.com/94&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;링크&lt;/a&gt;를 클릭하여 이 분의 방법을 따라하는 것을 추천한다. (결론은 무료강의 &lt;b&gt;2파트를 반복적으로 학습&lt;/b&gt;하는 것임.)&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;이건 넘어가도 좋습니다. 제 수준에서 위 단어들에 대해 설명한 것입니다.&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인공지능: 학습된 데이터를 바탕으로 자연어로 결과를 도출해낸다.&lt;/li&gt;
&lt;li&gt;Train/Test: Train데이터를 바탕으로 학습시킨 뒤 Test 데이터를 바탕으로 훈련된 AI를 평가한다.&lt;/li&gt;
&lt;li&gt;지도학습:&amp;nbsp;&lt;/li&gt;
&lt;li&gt;validation:&lt;/li&gt;
&lt;li&gt;Feature:&lt;/li&gt;
&lt;li&gt;Label: 스포츠, 과학, 사회 등 분류하기 위한 라벨&lt;/li&gt;
&lt;li&gt;강화학습:&lt;/li&gt;
&lt;li&gt;CNN:&lt;/li&gt;
&lt;li&gt;과적합:&lt;/li&gt;
&lt;li&gt;AI 모델: GPT, Claude 등과 같은 LLM 모델&lt;/li&gt;
&lt;li&gt;데이터 전처리: 중요 데이터만을 남기기 위한 전처리 과정&lt;/li&gt;
&lt;li&gt;알고리즘: 문제를 쉽게 풀기 위한 공식&lt;/li&gt;
&lt;li&gt;DNN:&lt;/li&gt;
&lt;li&gt;빅데이터: 많은 양의 데이터&lt;/li&gt;
&lt;li&gt;회귀&lt;/li&gt;
&lt;li&gt;머신러닝&lt;/li&gt;
&lt;li&gt;비지도학습:&lt;/li&gt;
&lt;li&gt;딥러닝:&lt;/li&gt;
&lt;li&gt;GPU:&lt;/li&gt;
&lt;li&gt;예측: AI 모델이 학습된 데이터를 가지고 정답을 예측하는 것&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;[이론편] AI의 이해 1 / 12 강사 소개 및 과정 소개&lt;/b&gt;&lt;/h4&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;[2/ 12] AI 의 정의&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI란 알고리즘으로 데이터를 학습(Train) 하여 모델을 만드는 기술이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기계에 부여하는 명령을 만드는 작업(전통적인 프로그래밍)과 달리 알고리즘으로 데이터를 학습하여 판단이나 예측을 하는 기술(머신러닝)&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;[3/12] AI 용어 및 요소&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AI가 주목 받는 이유:&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;빅데이터 시대의 도래: 양질의 데이터 폭발적 증가&lt;/li&gt;
&lt;li&gt;컴퓨팅 기술의 발전: GPU, 클라우드 발전&lt;/li&gt;
&lt;li&gt;Easy &amp;amp; Open: AI 기술 및 알고리즘 공유 문화&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AI 기술 문화&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프레임워크: TensorFlow, Keras, PyTorch, learn&lt;/li&gt;
&lt;li&gt;프로그래밍 언어: Python&amp;nbsp;&lt;/li&gt;
&lt;li&gt;AI 모델링 자동화 플랫폼: maum.ai, AIDUez, AI Suite&lt;/li&gt;
&lt;li&gt;오픈소스 라이브러리: NumPy(수치), pandas(테이블, 엑셀 같은)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AI 구현을 위한 3가지 요소&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;알고리즘&lt;/b&gt;: 입력되는 방대한 데이터를 어떻게 학습하여 추론할 것인지에 대한 영역.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;데이터&lt;/b&gt;: 학습하기 위한 양질의 데이터. 서비스의 품질을 가른다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;GPU&lt;/b&gt;: 방대한 데이터를 단시간에 처리할 수 있게 도와준다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI에서 자주 사용되는 알고리즘은 머신러닝과 딥러닝이 있다.&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;b&gt;AI 구조도, 인공지능 안에 머신러닝 안에 딥러닝. 즉, 인공지능이 제일 넓은 의미. 딥러닝이 제일 좁은 의미&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;인공지능&lt;/b&gt;: 계산, 학습 등 인간의 지적 능력으 ㄹ컴퓨터를 통해 구현하는 기술&amp;nbsp;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;머신러닝&lt;/b&gt;: 특정 부분을 스스로 학습해 성능을 향상
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;딥러닝&lt;/b&gt;: 인간의 뉴런과 비슷한 인공신경망으로 정보를 처리&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;[4 / 12] 딥러닝 (1)&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;머신러닝의 종류&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;지도학습&lt;/b&gt;(Task Driven Predict next value): 기계가 이미 &lt;b&gt;정답이 정해진&lt;/b&gt; 데이터를 바탕으로 학습함.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;비지도학습&lt;/b&gt;(Data Driven Idnetify Clusters): 기계가 &lt;b&gt;정답이 없는&lt;/b&gt; 데이터 집합에서 데이터의 특성을 특성화하여 군집화한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;강화학습&lt;/b&gt;: 상벌을 주어 학습한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;지도학습&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;입력(Feature, X) / 출력(Label, Y) 데이터로 학습한다. 예를 들어, 사과 사진을 보여주며 이것은 사과라고 학습시킨다. 그리고 컴퓨터에게 사과를 보여주면 컴퓨터는 사과라고 답한다. 즉, &lt;b&gt;문제도 주고 답도 준다.&amp;nbsp;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;예측&lt;/b&gt;(Predict)에는 &lt;b&gt;분류&lt;/b&gt;(Classification)과 &lt;b&gt;회귀&lt;/b&gt;(Regression)이 있다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;범주형이면 분류. 예를 들어 색을 구별하는 모델.&lt;/li&gt;
&lt;li&gt;수치형이면 회귀. 예를 들어 사람의 키를 주면 몸무게를 예측함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;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;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;지도학습이 잘됐는 지 어떻게 알 수 있을까?&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;정답이 있는 데이터를 수집.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Training Set과 Test Set을 7:3 혹은 8:2로 나눈다.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Training set으로 Machine learner 하고 Prediction model을 만든다. 그리고 Test set으로 &lt;b&gt;정답과 얼마나 유사한 지 비교&lt;/b&gt;한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 이미 거래가 완료된 부동산 데이터를 수집한다. Feature에 지역, 층수, 엘베유무, 평수, 건축년도 등을 넣고 Label은 부동산 매매 가격을 기대한다. (회귀 모델, 수치기 때문에)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, KT 5G 전환 가입자 예측. Label은 Yes, No 따라서 분류모델&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;쉽게 말해 무엇(Feature, X)로 무엇(Label, Y)를 예측하고 싶다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>자격증/AICE</category>
      <category>AICE</category>
      <category>BASIC</category>
      <category>지도학습</category>
      <author>몰입하는로건</author>
      <guid isPermaLink="true">https://studyiwthme.tistory.com/229</guid>
      <comments>https://studyiwthme.tistory.com/229#entry229comment</comments>
      <pubDate>Mon, 17 Mar 2025 17:35:39 +0900</pubDate>
    </item>
    <item>
      <title>[AICE] AI 자격증 도전기 1탄</title>
      <link>https://studyiwthme.tistory.com/228</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;a href=&quot;https://aice.study/main&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AICE 란? &lt;/a&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 링크 들어가면 자세히 볼 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;왜 따려고 하는 가?&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;비트코인은 못 탔지만,&lt;b&gt; AI 코인은 타고 싶기 때문&lt;/b&gt;이다. 정글 때 멘토님께서 AI쪽이셔서 AI 관련 이야기를 듣다보니 모르면 뒤쳐지겠다는 생각을 하니, 더더욱 하고 싶어졌다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;KT AI 석사과정의&lt;b&gt; 우대사항&lt;/b&gt;이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;번째는 끼워 넣었다. 누나의 말을 빌리자면, 현재 &lt;b&gt;취준하면서 시간과 에너지는 한정적&lt;/b&gt;이다. 따라서 &quot;토익, 토스 같은 다른 기업에서도 사용하는 자격증을 준비하는 게 더 낫다.&quot; 라고 해서 찾아봤다. &lt;a href=&quot;https://www.hankyung.com/article/2024112660721&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;40여 개 기업에서 AICE 인증을 우대&lt;/a&gt;하며, &lt;a href=&quot;https://aice.study/info/aice&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Associate 등급&lt;/a&gt;의 경우 공인민간자격으로 국가자격과 동등한 지위를 인정 받는다.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;AICE 자격증 종류 중 Basic을 택한 이유.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 호기롭게 Associate 등급을 따려고 한 달전에 생각했다. 하지만 이제 막 정글이 끝났다고 생각해서 좀 놀다가... &lt;b&gt;자격증 시험까지 시간이 얼마 남지 않아. Basic을 따려고 한다&lt;/b&gt;. 또한, KT AI 석사과정의 우대사항에서 &quot;AICE 자격증 보유자&quot; 라고만 했지 그 등급에 대해서는 언급이 없다. (내부 채점 기준에는 있겠지..)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;어떻게 공부할 것인가?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2가지 판단 기준을 잡았다.&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;돈이 안드는가?&lt;/li&gt;
&lt;li&gt;양질의 교육자료인가?&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;엄청난 시간을 들여 찾진 않았지만, 신뢰도 있는 기업에서 진행하기 때문에 믿고 갔다. 2가지로 추렸는 데 하나는 혼공시리즈의 &quot;혼자 공부하는 머신러닝+딥러닝&quot; 나머지는 AICE에서 무료로 제공하는 Basic 강의였다. 혼공시리즈를 듣다 이런 생각이 들었다.&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;내 시간과 에너지는 유한하다.&lt;/li&gt;
&lt;li&gt;현재는 자격증을 위한 공부를 하고 있는 것이다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 2가지 이유의 결론으로 나는 &lt;b&gt;&lt;a href=&quot;https://aice.study/front/edus/EDUCATION/detail/200000036&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AICE에서 제공하는 무료 강의&lt;/a&gt;를 듣기&lt;/b&gt;로 결심했다. (AICE에서 Baisc 자격증에 필요한 내용을 담지 않았을까?)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;마무리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4월 25일 (금) 시험이라 38일정도 남았다. &lt;b&gt;AI 분야에 대해 아예 모르는 사람이 Basic 을 딸 수 있었는 지 공유&lt;/b&gt;하려 한다. (오해 없길 오늘 처음 시작함요.)&amp;nbsp;&lt;/p&gt;</description>
      <category>자격증/AICE</category>
      <category>AICE</category>
      <category>BASIC</category>
      <category>KT</category>
      <author>몰입하는로건</author>
      <guid isPermaLink="true">https://studyiwthme.tistory.com/228</guid>
      <comments>https://studyiwthme.tistory.com/228#entry228comment</comments>
      <pubDate>Mon, 17 Mar 2025 16:09:25 +0900</pubDate>
    </item>
    <item>
      <title>[Python] BOJ 9935 문자열 폭발</title>
      <link>https://studyiwthme.tistory.com/227</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;요구사항&amp;nbsp;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시간 제한: 2초&amp;nbsp;&lt;/li&gt;
&lt;li&gt;메모리 제한: 128MB&lt;/li&gt;
&lt;li&gt;폭발 안할 거 처럼 보여도 (예제 입력1) 폭발하고 왼쪽 문자열과 오른쪽 문자열과 합쳤을 때, 폭발 문자열이라면 폭발한다.&lt;/li&gt;
&lt;li&gt;남아 있는 문자가 없는 경우 FRULA를 출력한다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;설계 1&amp;nbsp;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문자열에 폭발 문자열을 반복적으로 찾는다.&lt;/li&gt;
&lt;li&gt;남아 있는 문자가 없는 경우 &quot;FRULA&quot;를 출력한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1740036424476&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
input = lambda: sys.stdin.readline().rstrip()

sentence = input() # 입력 받은 문자열
bomb = input()     # 폭발 문자열

while bomb in sentence:
    sentence = sentence.replace(bomb, &quot;&quot;)

if not sentence:
    print(&quot;FRULA&quot;)
    exit()

print(sentence)&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시간 초과&amp;nbsp;&lt;/li&gt;
&lt;li&gt;이유는 아마도 replace할 bomb 을 찾기 위해 O(N)이 걸릴거고 만약 최악의 경우 O(N**2)이 걸림.&lt;/li&gt;
&lt;li&gt;문자열의 길이는 1,000,000 폭발 문자열은 36&amp;nbsp;&lt;/li&gt;
&lt;li&gt;문자열의 길이가 최대 1,000,000이기 때문에 최악의 경우 2초를 넘기는 것.. (되다 말더라..)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;설계 2&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문자열을 돌면서 하나씩 스택에 넣는다.&lt;/li&gt;
&lt;li&gt;쌓인 스택과 bomb이 일치할 때, stack에서 bomb의 길이만큼 제거한다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1740036976045&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
input = lambda: sys.stdin.readline().rstrip()

sentence = input() # 입력 받은 문자열
bomb = input()     # 폭발 문자열
bomb_len = len(bomb)
stack = []

for char in sentence:
    stack.append(char)

    if ''.join(stack[-bomb_len:]) == bomb:
        del stack[-bomb_len:]

result = ''.join(stack)

if result:
    print(result)
else:
    print(&quot;FRULA&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;[-bomb_len] 했을 때 끝에서부터 해당 길이만큼 똑바로 출력한다.&lt;/li&gt;
&lt;li&gt;예를 들어 bomb_len == 4 이고 stack = 'abcd' 라고 하자.&lt;/li&gt;
&lt;li&gt;stack[-bom_len] == 'abcd' 이다. dcba 라고 생각할 수 있다. 헷갈렸음.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>코딩테스트/백준</category>
      <category>9935</category>
      <category>백준</category>
      <category>파이썬</category>
      <author>몰입하는로건</author>
      <guid isPermaLink="true">https://studyiwthme.tistory.com/227</guid>
      <comments>https://studyiwthme.tistory.com/227#entry227comment</comments>
      <pubDate>Thu, 20 Feb 2025 16:38:37 +0900</pubDate>
    </item>
  </channel>
</rss>