<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>good_da22.log</title>
        <link>https://velog.io/</link>
        <description>dev blog</description>
        <lastBuildDate>Mon, 25 Jul 2022 12:49:49 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>good_da22.log</title>
            <url>https://images.velog.io/images/good_da22/profile/53bde489-06d8-4922-a2bc-816d0b49be48/인스타프로필.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. good_da22.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/good_da22" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[블로그 이전]]></title>
            <link>https://velog.io/@good_da22/%EB%B8%94%EB%A1%9C%EA%B7%B8-%EC%9D%B4%EC%A0%84</link>
            <guid>https://velog.io/@good_da22/%EB%B8%94%EB%A1%9C%EA%B7%B8-%EC%9D%B4%EC%A0%84</guid>
            <pubDate>Mon, 25 Jul 2022 12:49:49 GMT</pubDate>
            <description><![CDATA[<p><a href="https://good-da22.tistory.com/">Tistory</a></p>
<p>SSAFY를 하며 본격적으로 공부를 시작하고 정리할 필요를 느끼며
벨로그에서는 파이썬을 사용한 알고리즘 공부를 정리해왔지만</p>
<p>이제 자바에 집중하기 위해...!</p>
<p>2022.07.25 새롭게 블로그를 시작하며</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[SW Expert Academy] D3 10965번 제곱수 만들기(python)]]></title>
            <link>https://velog.io/@good_da22/SW-Expert-Academy-D3-10965%EB%B2%88-%EC%A0%9C%EA%B3%B1%EC%88%98-%EB%A7%8C%EB%93%A4%EA%B8%B0python</link>
            <guid>https://velog.io/@good_da22/SW-Expert-Academy-D3-10965%EB%B2%88-%EC%A0%9C%EA%B3%B1%EC%88%98-%EB%A7%8C%EB%93%A4%EA%B8%B0python</guid>
            <pubDate>Fri, 20 May 2022 06:42:31 GMT</pubDate>
            <description><![CDATA[<h1 id="sw-expert-academy">SW Expert Academy</h1>
<h2 id="d3-10965번-제곱수-만들기python">D3 10965번 제곱수 만들기(python)</h2>
<p><a href="https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&amp;problemLevel=2&amp;problemLevel=3&amp;contestProbId=AXWXH_h695kDFAST&amp;categoryId=AXWXH_h695kDFAST&amp;categoryType=CODE&amp;problemTitle=&amp;orderBy=PASS_RATE&amp;selectCodeLang=ALL&amp;select-1=3&amp;pageSize=10&amp;pageIndex=20">문제</a></p>
<h3 id="풀이과정">풀이과정</h3>
<p>단순히 소인수 분해를 할 경우 시간 초과 발생, 최대 값인 $10^7$을 고려해야한다.
소수를 구해 소수로 나누고 더 이상 나눠질 수 없는 소수인지 판별하는 과정으로 연산횟수 줄이기</p>
<p>$10^7$의 <strong>제곱근까지의 소수</strong>를 구한다.
제곱근 이상의 수 중 소수로 더 이상 나눌 수 없으면 해당 수 역시 소수다.</p>
<p>소수를 구하기 위해 <strong>에라토스테네스의 체 알고리즘</strong> 사용</p>
<p>이미 제곱수인 경우 결과는 1
제곱수가 아닌 경우 동일한 소수로 나누는 횟수가 홀수인 경우 해당 소수를 곱하면 제곱 수가 된다.</p>
<h3 id="소스코드">소스코드</h3>
<pre><code class="language-python">T = int(input())

# 소수 구하기
max_n = int((10 ** 7) ** 0.5)
array = [True for _ in range(max_n + 1)]

for i in range(2, int(max_n ** 0.5) + 1):
    if array[i]:
        j = 2
        while i * j &lt;= max_n:
            array[i * j] = False
            j += 1

prime = []

for i in range(2, len(array)):
    if array[i]:
        prime.append(i)

result = []

for t in range(1, T + 1):
    n = int(input())
    answer = 1

    if n ** 0.5 != int(n ** 0.5):
        for p in prime:
            count = 0
            while n % p == 0:
                n //= p
                count += 1
            if count % 2 != 0:
                answer *= p
            if n == 1 or p &gt; n:
                break
        if n &gt; 1:
            answer *= n

    result.append(answer)

for t in range(1, T + 1):
    print(&quot;#{} {}&quot;.format(t, result[t - 1]))</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[SW Expert Academy] D3 2814번 최장경로(python)]]></title>
            <link>https://velog.io/@good_da22/SW-Expert-Academy-D3-2814%EB%B2%88-%EC%B5%9C%EC%9E%A5%EA%B2%BD%EB%A1%9Cpython</link>
            <guid>https://velog.io/@good_da22/SW-Expert-Academy-D3-2814%EB%B2%88-%EC%B5%9C%EC%9E%A5%EA%B2%BD%EB%A1%9Cpython</guid>
            <pubDate>Fri, 20 May 2022 05:40:24 GMT</pubDate>
            <description><![CDATA[<h1 id="sw-expert-academy">SW Expert Academy</h1>
<h2 id="d3-2814번-최장경로python">D3 2814번 최장경로(python)</h2>
<p><a href="https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&amp;problemLevel=2&amp;problemLevel=3&amp;contestProbId=AV7GOPPaAeMDFAXB&amp;categoryId=AV7GOPPaAeMDFAXB&amp;categoryType=CODE&amp;problemTitle=&amp;orderBy=RECOMMEND_COUNT&amp;selectCodeLang=ALL&amp;select-1=3&amp;pageSize=10&amp;pageIndex=3">문제</a></p>
<h3 id="풀이과정">풀이과정</h3>
<p><strong>재귀함수를 이용한 DFS</strong>
각각의 노드에서 DFS 수행, 사이클이 없는 경로가 이어지는 경우 경로의 길이(노드의 개수)를 카운트
경로 탐색시 파생되는 경로를 모두 탐색하기 위해 방문한 노드의 방문 여부를 <code>False</code>로 지정</p>
<h3 id="소스코드">소스코드</h3>
<pre><code class="language-python">T = int(input())

for t in range(T):
    vertex, edge = map(int, input().split())
    graph = [[] for _ in range(vertex + 1)]

    for i in range(edge):
        a, b = map(int, input().split())
        graph[a].append(b)
        graph[b].append(a)

    result = 0

    for i in range(1, vertex + 1):
        visited = [False] * (vertex + 1)

        def dfs(v, count):
            global result
            visited[v] = True
            result = max(result, count)
            for x in graph[v]:
                if not visited[x]:
                    dfs(x, count+1)
                    visited[x] = False

        dfs(i, 1)

    print(&quot;#{} {}&quot;.format((t+1), result))</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[SW Expert Academy] D3 1220번 [S/W 문제해결 기본] 5일차 - Magnetic(python)]]></title>
            <link>https://velog.io/@good_da22/SW-Expert-Academy-D3-1220%EB%B2%88-SW-%EB%AC%B8%EC%A0%9C%ED%95%B4%EA%B2%B0-%EA%B8%B0%EB%B3%B8-5%EC%9D%BC%EC%B0%A8-Magneticpython</link>
            <guid>https://velog.io/@good_da22/SW-Expert-Academy-D3-1220%EB%B2%88-SW-%EB%AC%B8%EC%A0%9C%ED%95%B4%EA%B2%B0-%EA%B8%B0%EB%B3%B8-5%EC%9D%BC%EC%B0%A8-Magneticpython</guid>
            <pubDate>Fri, 20 May 2022 05:24:40 GMT</pubDate>
            <description><![CDATA[<h2 id="sw-expert-academy">SW Expert Academy</h2>
<h2 id="d3-1220번-sw-문제해결-기본-5일차---magneticpython">D3 1220번 [S/W 문제해결 기본] 5일차 - Magnetic(python)</h2>
<p><a href="https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&amp;problemLevel=2&amp;problemLevel=3&amp;contestProbId=AV14hwZqABsCFAYD&amp;categoryId=AV14hwZqABsCFAYD&amp;categoryType=CODE&amp;problemTitle=&amp;orderBy=RECOMMEND_COUNT&amp;selectCodeLang=ALL&amp;select-1=3&amp;pageSize=10&amp;pageIndex=3">문제</a></p>
<h3 id="풀이과정">풀이과정</h3>
<p>정해진 규칙에 따라 테이블 내에 더 이상의 이동이 불가할 경우(교착상태 도달)할 때 까지
정해진 규칙에 따라 이동해야 한다.</p>
<p><strong>이동의 조건을 명시</strong>
이동이 발생할 경우 <code>move = True</code>
더 이상 이동이 발생하지 않을 경우 <code>movep = False</code> 이동 종료, 이후 교착 상태 확인</p>
<p><strong>교착상태 확인</strong>
n극과 s극이 맞닿은 상태
n극과 s극이 맞닿은 상태의 개수 == 교착상태의 개수</p>
<h3 id="소스코드">소스코드</h3>
<pre><code class="language-python">T = 10

for t in range(1, T+1):
    table_length = int(input())
    table = []

    for _ in range(table_length):
        table.append(list(map(int, input().split())))

    while True:
        move = False
        for i in range(table_length):
            for j in range(table_length):
                if table[i][j] == 1 and i == table_length-1: #n극이 아래로가서 떨어지는 경우
                    table[i][j] = 0
                    move = True
                if table[i][j] == 2 and i == 0: #s극이 위로가서 떨어지는 경우
                    table[i][j] = 0
                    move = True
                if table[i][j] == 1 and table[i+1][j] == 0: #n극이 아래로
                    table[i][j] = 0
                    table[i+1][j] = 1
                    move = True
                if table[i][j] == 2 and table[i-1][j] == 0: #s극이 위로
                    table[i][j] = 0
                    table[i-1][j] = 2
                    move = True

        if not move:
            break

    count = 0
    for i in range(table_length):
        for j in range(table_length-1):
            if table[j][i] == 1 and table[j+1][i] == 2:
                count += 1

    print(&quot;#{} {}&quot;.format(t, count))</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[SW Expert Academy] D3 1216번 [S/W 문제해결 기본] 3일차 - 회문2(python)]]></title>
            <link>https://velog.io/@good_da22/SW-Expert-Academy-D3-1216%EB%B2%88-SW-%EB%AC%B8%EC%A0%9C%ED%95%B4%EA%B2%B0-%EA%B8%B0%EB%B3%B8-3%EC%9D%BC%EC%B0%A8-%ED%9A%8C%EB%AC%B82python</link>
            <guid>https://velog.io/@good_da22/SW-Expert-Academy-D3-1216%EB%B2%88-SW-%EB%AC%B8%EC%A0%9C%ED%95%B4%EA%B2%B0-%EA%B8%B0%EB%B3%B8-3%EC%9D%BC%EC%B0%A8-%ED%9A%8C%EB%AC%B82python</guid>
            <pubDate>Fri, 20 May 2022 05:18:56 GMT</pubDate>
            <description><![CDATA[<h1 id="sw-expert-academy">SW Expert Academy</h1>
<h2 id="d3-1216번-sw-문제해결-기본-3일차---회문2python">D3 1216번 [S/W 문제해결 기본] 3일차 - 회문2(python)</h2>
<p><a href="">문제</a></p>
<h3 id="풀이과정">풀이과정</h3>
<p>100 * 100 테이블에서 회문을 찾고 가장 길이가 긴 회문의 길이를 출력
<strong>가로(행)에서 회문 탐색</strong>
하나의 행에서 회문의 길이가 최대 100부터 1씩 감소하며 이어지는 문자열 검색
뒤에서 부터 탐색하기 때문에 기존의 회문이 발견되면 기존의 최대 길이와 비교후 다음 행으로</p>
<p><strong>세로(열)에서 회문 탐색</strong>
하나의 열에서 회문의 길이 1부터 최대 100 까지 1씩 증가하며 이어지는 문자열 검색
회문이 발견되면 기존의 최대 길이와 비교
길이가 1인 경우부터 비교하기 때문에 하나의 행에서 최대 길이가 될때 까지 회문의 여부를 확인해야한다.</p>
<h3 id="소스코드">소스코드</h3>
<pre><code class="language-python">for t in range(10):
    test_number = int(input())

    board = []

    for _ in range(100):
        board.append(input())

    row_max = 0
    for i in range(100):
        for j in range(100):
            for k in range(100-j):
                row_string = board[i][j:101-k]
                if row_string == row_string[::-1]:
                    row_max = max(row_max, len(row_string))
                    break

    col_max = 0
    for i in range(100):
        for j in range(100):
            col_string = &#39;&#39;
            for k in range(100-j):
                col_string += board[j+k][i]
                if col_string == col_string[::-1]:
                    col_max = max(col_max, len(col_string))

    result = max(row_max, col_max)

    print(&quot;#{} {}&quot;.format(test_number, result))</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[SW Expert Academy] D1 2047번 신문 헤드라인(python)]]></title>
            <link>https://velog.io/@good_da22/SW-Expert-Academy-D1-2047%EB%B2%88-%EC%8B%A0%EB%AC%B8-%ED%97%A4%EB%93%9C%EB%9D%BC%EC%9D%B8python</link>
            <guid>https://velog.io/@good_da22/SW-Expert-Academy-D1-2047%EB%B2%88-%EC%8B%A0%EB%AC%B8-%ED%97%A4%EB%93%9C%EB%9D%BC%EC%9D%B8python</guid>
            <pubDate>Fri, 20 May 2022 05:10:20 GMT</pubDate>
            <description><![CDATA[<h1 id="sw-expert-academy">SW Expert Academy</h1>
<h2 id="d1-2047번-신문-헤드라인python">D1 2047번 신문 헤드라인(python)</h2>
<p><a href="https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&amp;problemLevel=2&amp;problemLevel=3&amp;contestProbId=AV5QKsLaAy0DFAUq&amp;categoryId=AV5QKsLaAy0DFAUq&amp;categoryType=CODE&amp;problemTitle=&amp;orderBy=RECOMMEND_COUNT&amp;selectCodeLang=ALL&amp;select-1=3&amp;pageSize=10&amp;pageIndex=3">문제</a></p>
<h3 id="풀이과정">풀이과정</h3>
<p>파이썬 정규식을 사용하지 않고 문자를 숫자로 <code>ord()</code> 숫자를 문자로 <code>chr()</code>
대문자 A의 경우 65
알파벳의 순서 + 65
<code>chr(ord(char) - ord(&#39;a&#39;) + 65)</code></p>
<h3 id="소스코드">소스코드</h3>
<pre><code class="language-python">string = input()

upper = &#39;&#39;
for char in string:
    if ord(&#39;a&#39;) &lt;= ord(char) &lt;= ord(&#39;z&#39;):
        upper += chr(ord(char) - ord(&#39;a&#39;) + 65)
    else:
        upper += char
print(upper)</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[SW Expert Academy] D3 2817번 부분 수열의 합(python)]]></title>
            <link>https://velog.io/@good_da22/SW-Expert-Academy-D3-2817%EB%B2%88-%EB%B6%80%EB%B6%84-%EC%88%98%EC%97%B4%EC%9D%98-%ED%95%A9python</link>
            <guid>https://velog.io/@good_da22/SW-Expert-Academy-D3-2817%EB%B2%88-%EB%B6%80%EB%B6%84-%EC%88%98%EC%97%B4%EC%9D%98-%ED%95%A9python</guid>
            <pubDate>Mon, 16 May 2022 13:31:45 GMT</pubDate>
            <description><![CDATA[<h1 id="sw-expert-academy">SW Expert Academy</h1>
<h2 id="d3-2817번-부분-수열의-합python">D3 2817번 부분 수열의 합(python)</h2>
<p><a href="https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&amp;problemLevel=2&amp;problemLevel=3&amp;contestProbId=AV7IzvG6EksDFAXB&amp;categoryId=AV7IzvG6EksDFAXB&amp;categoryType=CODE&amp;problemTitle=&amp;orderBy=RECOMMEND_COUNT&amp;selectCodeLang=ALL&amp;select-1=3&amp;pageSize=10&amp;pageIndex=3">문제</a></p>
<h3 id="풀이과정">풀이과정</h3>
<p>조합 <code>combinations</code>를 모두 구해 문제를 해결할 경우 <strong>시간 초과</strong></p>
<p><strong>재귀함수</strong>를 통해 완전 탐색
현재 인덱스에 해당하는 원소를 포함하는 경우, 그렇지 않은 경우
각각의 재귀함수 호출을 통해 확인</p>
<p>재귀함수의 <strong>종료 조건</strong>과 <strong>호출 형태</strong> 설계하기</p>
<h3 id="소스코드">소스코드</h3>
<pre><code class="language-python">T = int(input())

result = []


def solve(idx, curr_sum):
    global count
    temp = curr_sum + seq[idx]

    if temp == k: #조건과 일치할 경우
        count += 1
        return

    if idx == n: #끝까지 탐색한 경우
        if temp == k:  # 조건과 일치할 경우
            count += 1
        return

    if temp &gt; k: #정해진 k 보다 큰 경우 추가되는 조합을 찾을 필요가 없다
        return

    solve(idx + 1, curr_sum) #현재 인덱스의 숫자를 선택하지 않은 경우
    solve(idx + 1, temp) #현재 인덱스의 숫자를 선택하여 합한 경우


for t in range(T):
    n, k = map(int, input().split())
    seq = list(map(int, input().split()))
    count = 0
    solve(0, 0) #0번째 원소부터, 현재 합은 0
    result.append(count)

for t in range(T):
    print(&quot;#{} {}&quot;.format((t + 1), result[t]))</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[SW Expert Academy] D3 1215번 [S/W 문제해결 기본] 3일차 - 회문1(python)]]></title>
            <link>https://velog.io/@good_da22/SW-Expert-Academy-D3-1215%EB%B2%88-SW-%EB%AC%B8%EC%A0%9C%ED%95%B4%EA%B2%B0-%EA%B8%B0%EB%B3%B8-3%EC%9D%BC%EC%B0%A8-%ED%9A%8C%EB%AC%B81python</link>
            <guid>https://velog.io/@good_da22/SW-Expert-Academy-D3-1215%EB%B2%88-SW-%EB%AC%B8%EC%A0%9C%ED%95%B4%EA%B2%B0-%EA%B8%B0%EB%B3%B8-3%EC%9D%BC%EC%B0%A8-%ED%9A%8C%EB%AC%B81python</guid>
            <pubDate>Mon, 16 May 2022 13:21:18 GMT</pubDate>
            <description><![CDATA[<h1 id="sw-expert-academy">SW Expert Academy</h1>
<h2 id="1215번-sw-문제해결-기본-3일차---회문1--python">1215번 [S/W 문제해결 기본] 3일차 - 회문1 / Python</h2>
<p><a href="https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&amp;problemLevel=2&amp;problemLevel=3&amp;contestProbId=AV14QpAaAAwCFAYi&amp;categoryId=AV14QpAaAAwCFAYi&amp;categoryType=CODE&amp;problemTitle=&amp;orderBy=RECOMMEND_COUNT&amp;selectCodeLang=ALL&amp;select-1=3&amp;pageSize=10&amp;pageIndex=2">문제</a></p>
<h3 id="풀이과정">풀이과정</h3>
<p>정해진 길이의 회문을 찾아서 완전탐색
가로 검사의 경우 행 접근, 슬라이싱으로 문자열 확인
세로 검사의 경우 열 접근, 정해진 회문의 길이 만큼 열을 탐색, 문자열 확인</p>
<p><code>string == string[::-1]</code> 문자열 원문과 역순 비교</p>
<h3 id="소스코드">소스코드</h3>
<pre><code class="language-python">T = 10

result = []
for i in range(T):
    length = int(input())
    testcase = []
    for _ in range(8):
        testcase.append(input())

    count = 0
    for i in range(8):
        for j in range(8 - length + 1): #검사 할 인덱스 주의
            #가로 검사
            string = testcase[i][j:j+length] #가로의 경우 슬라이싱
            if string == string[::-1]: #문자열 역순
                count += 1
            #세로 검사
            string = &#39;&#39;
            for k in range(length):
                string += testcase[j + k][i] #세로의 경우 row 인덱스와 col 인덱스 주의
            if string == string[::-1]:
                count += 1

    result.append(count)

for i in range(T):
    print(&quot;#{} {}&quot;.format((i+1), result[i]))</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[SW Expert Academy] D3 1209번 [S/W 문제해결 기본] 2일차 - Sum(python)]]></title>
            <link>https://velog.io/@good_da22/SW-Expert-Academy-D2-1209%EB%B2%88-SW-%EB%AC%B8%EC%A0%9C%ED%95%B4%EA%B2%B0-%EA%B8%B0%EB%B3%B8-2%EC%9D%BC%EC%B0%A8-Sumpython</link>
            <guid>https://velog.io/@good_da22/SW-Expert-Academy-D2-1209%EB%B2%88-SW-%EB%AC%B8%EC%A0%9C%ED%95%B4%EA%B2%B0-%EA%B8%B0%EB%B3%B8-2%EC%9D%BC%EC%B0%A8-Sumpython</guid>
            <pubDate>Mon, 16 May 2022 13:16:16 GMT</pubDate>
            <description><![CDATA[<h1 id="sw-expert-academy">SW Expert Academy</h1>
<h2 id="1209번-sw-문제해결-기본-2일차---sum--python">1209번 [S/W 문제해결 기본] 2일차 - Sum / Python</h2>
<p><a href="https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&amp;problemLevel=2&amp;problemLevel=3&amp;contestProbId=AV13_BWKACUCFAYh&amp;categoryId=AV13_BWKACUCFAYh&amp;categoryType=CODE&amp;problemTitle=&amp;orderBy=RECOMMEND_COUNT&amp;selectCodeLang=ALL&amp;select-1=3&amp;pageSize=10&amp;pageIndex=3">문제</a></p>
<h3 id="풀이과정">풀이과정</h3>
<p>반복분 안에서 행의 합, 열의 합 구하기
2개의 대각선에 따른 인덱스 접근으로 대각선 합 구하기</p>
<p>반복문을 수행하는 과정에서 구한 하나의 행의 합과 하나의 열의 합 중 큰 값을 저장
최종적으로 합의 결과가 저장된 리스트에서 최대값 출력</p>
<h3 id="소스코드">소스코드</h3>
<pre><code class="language-python">T = 10

result = []
for t in range(T):
    test = int(input())
    testcase = []
    for _ in range(100):
        arr = list(map(int, input().split()))
        testcase.append(arr)

    arr_sum = []
    left_top_sum = 0 #left-top to right-bottom 대각선
    right_top_sum = 0 #right-top to right-bottom 대각선
    for i in range(100):
        row_sum = 0
        col_sum = 0
        left_top_sum += testcase[i][i]
        right_top_sum += testcase[i][-i - 1]
        for j in range(100):
            row_sum += testcase[i][j] #행의 합
            col_sum += testcase[j][i] #열의 합
        arr_sum.append(max(row_sum, col_sum))
    arr_sum.append(max(left_top_sum, right_top_sum))

    result.append(max(arr_sum)) #최대 값 구하기

for t in range(T):
    print(&quot;#{} {}&quot;.format((t+1), result[t]))</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[SW Expert Academy] D2 2005번 파스칼의 삼각형(python)]]></title>
            <link>https://velog.io/@good_da22/SW-Expert-Academy-D2-2005%EB%B2%88-%ED%8C%8C%EC%8A%A4%EC%B9%BC%EC%9D%98-%EC%82%BC%EA%B0%81%ED%98%95python</link>
            <guid>https://velog.io/@good_da22/SW-Expert-Academy-D2-2005%EB%B2%88-%ED%8C%8C%EC%8A%A4%EC%B9%BC%EC%9D%98-%EC%82%BC%EA%B0%81%ED%98%95python</guid>
            <pubDate>Mon, 16 May 2022 13:10:11 GMT</pubDate>
            <description><![CDATA[<h1 id="sw-expert-academy">SW Expert Academy</h1>
<h2 id="2005번-파스칼의-삼각형--python">2005번 파스칼의 삼각형 / Python</h2>
<p><a href="https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&amp;problemLevel=2&amp;problemLevel=3&amp;contestProbId=AV5P0-h6Ak4DFAUq&amp;categoryId=AV5P0-h6Ak4DFAUq&amp;categoryType=CODE&amp;problemTitle=&amp;orderBy=RECOMMEND_COUNT&amp;selectCodeLang=ALL&amp;select-1=3&amp;pageSize=10&amp;pageIndex=2">문제</a></p>
<h3 id="풀이과정">풀이과정</h3>
<p>출력 형태를 고려하여 삼각형 그리기
왼쪽 위와 오른쪽 위에 인덱스 조작으로 접근
계산을 위해 0으로 채워진 2차원 리스트 선언</p>
<h3 id="소스코드">소스코드</h3>
<pre><code class="language-python">T = int(input())

testcase = []
for i in range(T):
    n = int(input())
    testcase.append(n)

for i in range(T):
    n = testcase[i]
    result = [[0] * n for _ in range(n)]
    result[0][0] = 1
    for j in range(1, n):
        for k in range(j+1):
            result[j][k] = result[j-1][k-1] + result[j-1][k]  #출력 형태에 따라 왼쪽 위 오른쪽 위 접근

    print(&quot;#{}&quot;.format((i+1)))
    for j in range(n):
        for k in range(n):
            if result[j][k] != 0:
                print(result[j][k], end=&#39; &#39;)
        print()</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[SW Expert Academy] D2 2001번 파리 퇴치(python)]]></title>
            <link>https://velog.io/@good_da22/SW-Expert-Academy-D2-2001%EB%B2%88-%ED%8C%8C%EB%A6%AC-%ED%87%B4%EC%B9%98python</link>
            <guid>https://velog.io/@good_da22/SW-Expert-Academy-D2-2001%EB%B2%88-%ED%8C%8C%EB%A6%AC-%ED%87%B4%EC%B9%98python</guid>
            <pubDate>Mon, 16 May 2022 13:07:13 GMT</pubDate>
            <description><![CDATA[<h1 id="sw-expert-academy">SW Expert Academy</h1>
<h2 id="2001번-파리-퇴치--python">2001번 파리 퇴치 / python</h2>
<p><a href="https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&amp;problemLevel=2&amp;problemLevel=3&amp;contestProbId=AV5PzOCKAigDFAUq&amp;categoryId=AV5PzOCKAigDFAUq&amp;categoryType=CODE&amp;problemTitle=&amp;orderBy=RECOMMEND_COUNT&amp;selectCodeLang=ALL&amp;select-1=3&amp;pageSize=10&amp;pageIndex=2">문제</a></p>
<h3 id="풀이과정">풀이과정</h3>
<p>파리채의 크기 만큼 완전 탐색
파리채의 크기 만큼 탐색시 탐색의 범위 지정</p>
<h3 id="소스코드">소스코드</h3>
<pre><code class="language-python">T = int(input())

result = []
for i in range(T):
    n, m = map(int, input().split())
    fly = []
    for _ in range(n):
        arr = list(map(int, input().split()))
        fly.append(arr)

    kill = 0
    for x in range(n - m + 1): # 파리채의 영역 접근, 인덱스 계산에 주의
        for y in range(n - m + 1):
            temp = 0
            for a in range(m):
                for b in range(m):
                    temp += fly[x + a][y + b]
            if temp &gt; kill:
                kill = temp

    result.append(kill)

for i in range(T):
    print(&quot;#{} {}&quot;.format((i + 1), result[i]))
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[SW Expert Academy] D2 1983번 조교의 성적 매기기(python)]]></title>
            <link>https://velog.io/@good_da22/SW-Expert-Academy-D2-1983%EB%B2%88-%EC%A1%B0%EA%B5%90%EC%9D%98-%EC%84%B1%EC%A0%81-%EB%A7%A4%EA%B8%B0%EA%B8%B0python</link>
            <guid>https://velog.io/@good_da22/SW-Expert-Academy-D2-1983%EB%B2%88-%EC%A1%B0%EA%B5%90%EC%9D%98-%EC%84%B1%EC%A0%81-%EB%A7%A4%EA%B8%B0%EA%B8%B0python</guid>
            <pubDate>Mon, 16 May 2022 13:02:46 GMT</pubDate>
            <description><![CDATA[<h1 id="sw-expert-academy">SW Expert Academy</h1>
<h2 id="1983번-조교의-성적-매기기--python">1983번 조교의 성적 매기기 / Python</h2>
<p><a href="https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&amp;problemLevel=2&amp;problemLevel=3&amp;contestProbId=AV5PwGK6AcIDFAUq&amp;categoryId=AV5PwGK6AcIDFAUq&amp;categoryType=CODE&amp;problemTitle=&amp;orderBy=RECOMMEND_COUNT&amp;selectCodeLang=ALL&amp;select-1=3&amp;pageSize=10&amp;pageIndex=3">문제</a></p>
<h3 id="풀이과정">풀이과정</h3>
<p>학생 번호와 점수를 저장
<code>key=lambda x: x[1], reverse=True</code> 조건을 통해 성적 순으로 내림차순 정렬
성적을 기준으로 각 학생 번호에 성적 부여</p>
<h3 id="소스코드">소스코드</h3>
<pre><code class="language-python">T = int(input())

result = []
for i in range(T):
    n, k = map(int, input().split())
    student = []
    grade = [&#39;&#39;] * n
    grades = [&#39;A+&#39;, &#39;A0&#39;, &#39;A-&#39;, &#39;B+&#39;, &#39;B0&#39;, &#39;B-&#39;, &#39;C+&#39;, &#39;C0&#39;, &#39;C-&#39;, &#39;D0&#39;]

    for j in range(n):
        middle, final, homework = map(int, input().split())
        score = middle * 0.35 + final * 0.45 + homework * 0.2
        student.append((j, score)) #학생번호 0 ~ (n-1) 인덱스 사용 주의
    student.sort(key=lambda x: x[1], reverse=True) #람다식 주의, 성적 내림차순 정렬

    for j in range(1, 11):
        for x in range(n//10*(j-1), n//10*j): #반복문 사용시 내부 변수 명 주의
            grade[student[x][0]] = grades[j-1]

    result.append(grade[k-1]) #인덱스에 주의

for i in range(T):
    print(&quot;#{} {}&quot;.format((i+1), result[i]))</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[SW Expert Academy] D2 1974번 스도쿠 검증(python)]]></title>
            <link>https://velog.io/@good_da22/SW-Expert-Academy-D2-1974%EB%B2%88-%EC%8A%A4%EB%8F%84%EC%BF%A0-%EA%B2%80%EC%A6%9Dpython</link>
            <guid>https://velog.io/@good_da22/SW-Expert-Academy-D2-1974%EB%B2%88-%EC%8A%A4%EB%8F%84%EC%BF%A0-%EA%B2%80%EC%A6%9Dpython</guid>
            <pubDate>Mon, 16 May 2022 12:58:24 GMT</pubDate>
            <description><![CDATA[<h1 id="sw-expert-academy">SW Expert Academy</h1>
<h2 id="1974번-스도쿠-검증--python">1974번 스도쿠 검증 / Python</h2>
<p><a href="https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&amp;problemLevel=2&amp;problemLevel=3&amp;contestProbId=AV5Psz16AYEDFAUq&amp;categoryId=AV5Psz16AYEDFAUq&amp;categoryType=CODE&amp;problemTitle=&amp;orderBy=RECOMMEND_COUNT&amp;selectCodeLang=ALL&amp;select-1=3&amp;pageSize=10&amp;pageIndex=3&amp;problemLevel=1%2C2%2C3&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;">문제</a></p>
<h3 id="풀이과정">풀이과정</h3>
<p>가로 줄의 스도쿠 성립 여부
세로 줄의 스도쿠 성립 여부
박스의 스도쿠 성립 여부
<strong>인덱스 조작</strong>을 통한 접근, 각 성립 여부를 확인하기 위한 <strong>리스트</strong>
한 번이라도 틀리는 경우 더 이상 검사 필요 없다
<strong>이중 반복문</strong> 탈출</p>
<h3 id="소스코드">소스코드</h3>
<pre><code class="language-python">#정답일 경우 1, 오답일 경우 0

T = int(input())

result = []
for t in range(T):
    testcase = []
    for _ in range(9):
        arr = list(map(int, input().split()))
        testcase.append(arr)
    verify = 1
    breaker = False
    for i in range(9):
        row_verify = [] #가로 검증
        col_verify = [] #세로 검증
        box_verify = [] #3*3 박스 검증
        for j in range(9):
            if testcase[i][j] not in row_verify and \
                    testcase[j][i] not in col_verify and \
                    testcase[i//3 * 3 + j % 3][i//3 * 3 + j//3] not in box_verify:
                row_verify.append(testcase[i][j])
                col_verify.append(testcase[j][i])
                box_verify.append(testcase[i//3 * 3 + j % 3][i//3 * 3 + j//3]) #3*3 box를 차례로 검사하기 위한 인덱스 접근
            else:
                verify = 0 #한번이라도 틀리면 더 이상 검사할 필요 없다.
                breaker = True
                break
        if breaker: #이중 반복문 탈출
            break
    result.append(verify)

for t in range(T):
    print(&quot;#{} {}&quot;.format((t+1), result[t]))
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[SW Expert Academy] D2 2007번 패턴 마디의 길이(python)]]></title>
            <link>https://velog.io/@good_da22/SW-Expert-Academy-D2-2007%EB%B2%88-%ED%8C%A8%ED%84%B4-%EB%A7%88%EB%94%94%EC%9D%98-%EA%B8%B8%EC%9D%B4python</link>
            <guid>https://velog.io/@good_da22/SW-Expert-Academy-D2-2007%EB%B2%88-%ED%8C%A8%ED%84%B4-%EB%A7%88%EB%94%94%EC%9D%98-%EA%B8%B8%EC%9D%B4python</guid>
            <pubDate>Sat, 14 May 2022 13:35:04 GMT</pubDate>
            <description><![CDATA[<h1 id="sw-expert-academy">SW Expert Academy</h1>
<h2 id="2007번-패턴-마디의-길이--python">2007번 패턴 마디의 길이 / Python</h2>
<p><a href="https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&amp;problemLevel=2&amp;problemLevel=3&amp;contestProbId=AV5P1kNKAl8DFAUq&amp;categoryId=AV5P1kNKAl8DFAUq&amp;categoryType=CODE&amp;problemTitle=&amp;orderBy=RECOMMEND_COUNT&amp;selectCodeLang=ALL&amp;select-1=3&amp;pageSize=10&amp;pageIndex=2">문제</a></p>
<h3 id="풀이과정">풀이과정</h3>
<p><strong>패턴</strong> 찾기
최초의 패턴은 첫 글자 하나
패턴이 성립되기 위해선 하나의 패턴이 나오고 다음부터 다시 같은 길이의 패턴이 등장해야한다.
<code>test[:len(pattern]] == test[len(pattern) : len(pattern) * 2]</code>
패턴이 성립하지 않는 경우 패턴의 길이 1 증가</p>
<h3 id="소스코드">소스코드</h3>
<pre><code class="language-python">T = int(input())

testcase = []
for i in range(T):
    testcase.append(input())

for i in range(T):
    test = testcase[i]
    pattern = test[0]
    end_point = 1
    while True:
        if pattern == test[len(pattern):len(pattern) * 2]: # 패턴 유효성 검사
            break
        pattern = test[:end_point] # 패턴 정의
        end_point += 1
    print(&quot;#{} {}&quot;.format((i+1), len(pattern)))</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[SW Expert Academy] D2 1926번 간단한 369게임(python)]]></title>
            <link>https://velog.io/@good_da22/SW-Expert-Academy-D2-1926%EB%B2%88-%EA%B0%84%EB%8B%A8%ED%95%9C-369%EA%B2%8C%EC%9E%84python</link>
            <guid>https://velog.io/@good_da22/SW-Expert-Academy-D2-1926%EB%B2%88-%EA%B0%84%EB%8B%A8%ED%95%9C-369%EA%B2%8C%EC%9E%84python</guid>
            <pubDate>Sat, 14 May 2022 09:37:05 GMT</pubDate>
            <description><![CDATA[<h1 id="sw-expert-academy">SW Expert Academy</h1>
<h2 id="1926번-간단한-369-게임--python">1926번 간단한 369 게임 / Python</h2>
<p><a href="https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&amp;problemLevel=2&amp;problemLevel=3&amp;contestProbId=AV5PTeo6AHUDFAUq&amp;categoryId=AV5PTeo6AHUDFAUq&amp;categoryType=CODE&amp;problemTitle=&amp;orderBy=RECOMMEND_COUNT&amp;selectCodeLang=ALL&amp;select-1=3&amp;pageSize=10&amp;pageIndex=2">문제</a></p>
<h3 id="풀이과정">풀이과정</h3>
<p>주석으로 코드 설명 대체</p>
<h3 id="소스코드">소스코드</h3>
<pre><code class="language-python">n = int(input())

game = [&#39;3&#39;, &#39;6&#39;, &#39;9&#39;] #박수치는 경우
for i in range(1, n+1):
  num = (str(i)) #각 자리에서 비교위해 문자열로 치환
  count = 0 #박수치는 횟수
  for j in range(len(num)): #숫자의 자리수 마다
    if num[j] in game: #3, 6, 9 포함여부
      count += 1 #포함하는 경우 박수 횟수 증가
  if count &gt; 0: #3, 6, 9가 하나라도 포함된 경우
    num = &#39;-&#39; * count #박수 횟수 만큼 &#39;-&#39;
  print(num, end=&#39; &#39;)</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[SW Expert Academy] D3 2086번 N-Queen(python)]]></title>
            <link>https://velog.io/@good_da22/SW-Expert-Academy-D3-2086%EB%B2%88-N-Queenpython</link>
            <guid>https://velog.io/@good_da22/SW-Expert-Academy-D3-2086%EB%B2%88-N-Queenpython</guid>
            <pubDate>Sat, 14 May 2022 09:14:01 GMT</pubDate>
            <description><![CDATA[<h1 id="sw-expert-academy">SW Expert Academy</h1>
<h2 id="2086번-n-queen--python">2086번 N-Queen / Python</h2>
<p><a href="https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&amp;problemLevel=2&amp;problemLevel=3&amp;contestProbId=AV7GKs06AU0DFAXB&amp;categoryId=AV7GKs06AU0DFAXB&amp;categoryType=CODE&amp;problemTitle=&amp;orderBy=RECOMMEND_COUNT&amp;selectCodeLang=ALL&amp;select-1=3&amp;pageSize=10&amp;pageIndex=1">문제</a></p>
<h3 id="풀이과정">풀이과정</h3>
<p>N * N 보드에서 N개의 퀸이 있을 수 있는 경우의 수 구하기
N개의 퀸의 서로 같은 행과 열, 대각선에 위치할 수 없다.
<code>rows</code> <strong>리스트의 인덱스는 행의 번호(x좌표)</strong>, <strong>해당 인덱스의 값은 열의 번호(y좌표)</strong>
같은 열에 위치하는 경우(y좌표) <code>rows[x] == rows[i]</code>
대각선에 위치하는 경우 <code>abs(rows[x] - rows[i]) == abs(x - i)</code>
퀸이 위치할 수 있는지 여부를 확인하는 함수 <code>is_promising(x)</code></p>
<p>경우의 수를 계산할 전역 변수 <code>global result</code>
마지막 행 까지 검사한 경우 <code>x == n</code> 경우의 수 추가, 재귀 종료
(0, 0)부터 퀸을 위치 시키고 다음 행부터 퀸이 올 수 있는 경우를 재귀적으로 찾는다.</p>
<h3 id="소스코드">소스코드</h3>
<pre><code class="language-python">T = int(input())

testcase = []

for i in range(T):
  testcase.append(int(input()))

def is_promising(x):
  for i in range(x):
    if rows[x] == rows[i] or abs(rows[x] - rows[i]) == abs(x - i):
      return False
  return True

def solve(x):
  global result
  if x == n:
    result += 1
    return

  for i in range(n):
    rows[x] = i
    if is_promising(x):
      solve(x+1)

for i in range(T):
  n = testcase[i]
  rows = [0] * n
  result = 0
  solve(0)
  print(&quot;#%d %d&quot;%((i+1), result))</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[SW Expert Academy] D3 1208번 [S/W 문제해결 기본] 1일차 - Flatten(python)]]></title>
            <link>https://velog.io/@good_da22/SW-Expert-Academy-D3-1208%EB%B2%88-SW-%EB%AC%B8%EC%A0%9C%ED%95%B4%EA%B2%B0-%EA%B8%B0%EB%B3%B8-1%EC%9D%BC%EC%B0%A8-Flattenpython</link>
            <guid>https://velog.io/@good_da22/SW-Expert-Academy-D3-1208%EB%B2%88-SW-%EB%AC%B8%EC%A0%9C%ED%95%B4%EA%B2%B0-%EA%B8%B0%EB%B3%B8-1%EC%9D%BC%EC%B0%A8-Flattenpython</guid>
            <pubDate>Sat, 14 May 2022 07:35:24 GMT</pubDate>
            <description><![CDATA[<h1 id="sw-expert-academy">SW Expert Academy</h1>
<h2 id="1208번-sw-문제해결-기본-1일차---flatten--python">1208번 [S/W 문제해결 기본] 1일차 - Flatten / Python</h2>
<p><a href="https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&amp;problemLevel=2&amp;problemLevel=3&amp;contestProbId=AV139KOaABgCFAYh&amp;categoryId=AV139KOaABgCFAYh&amp;categoryType=CODE&amp;problemTitle=&amp;orderBy=RECOMMEND_COUNT&amp;selectCodeLang=ALL&amp;select-1=3&amp;pageSize=10&amp;pageIndex=1">문제</a></p>
<h3 id="풀이과정">풀이과정</h3>
<p>가장 큰 값에서 1을 빼고 가장 작은 값에 1을 더한다.
가장 큰 값(MAX)와 가장 작은 값(MIN)에 접근 필요
<code>sort()</code>을 통해 접근 혹은 <code>max()</code>와 <code>min()</code>을 통해 접근</p>
<h3 id="소스코드">소스코드</h3>
<pre><code class="language-python">T = 10

dump = []
boxes = []

for i in range(T):
  dump.append(int(input()))
  box = list(map(int, input().split()))
  box.sort(reverse=True)
  boxes.append(box)

def solve(box, count):
  result = box[0] - box[-1]
  for i in range(count):
    box[0] -= 1
    box[-1] += 1
    box.sort(reverse=True)
    if result == 0 or result == 1:
      break
    result = box[0] - box[-1]
  return result

for i in range(T):
  result = solve(boxes[i], dump[i])
  print(&quot;#%d %d&quot; %((i+1), result))</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[SW Expert Academy] D1 2056번 연월일 달력(python)]]></title>
            <link>https://velog.io/@good_da22/SW-Expert-Academy-D1-2056%EB%B2%88-%EC%97%B0%EC%9B%94%EC%9D%BC-%EB%8B%AC%EB%A0%A5python</link>
            <guid>https://velog.io/@good_da22/SW-Expert-Academy-D1-2056%EB%B2%88-%EC%97%B0%EC%9B%94%EC%9D%BC-%EB%8B%AC%EB%A0%A5python</guid>
            <pubDate>Thu, 12 May 2022 04:46:33 GMT</pubDate>
            <description><![CDATA[<h1 id="sw-expert-academy">SW Expert Academy</h1>
<h2 id="2056번-연월일-달력--python">2056번 연월일 달력 / Python</h2>
<p><a href="https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&amp;problemLevel=2&amp;problemLevel=3&amp;contestProbId=AV5QLkdKAz4DFAUq&amp;categoryId=AV5QLkdKAz4DFAUq&amp;categoryType=CODE&amp;problemTitle=&amp;orderBy=RECOMMEND_COUNT&amp;selectCodeLang=ALL&amp;select-1=3&amp;pageSize=10&amp;pageIndex=1">문제</a></p>
<h3 id="풀이과정">풀이과정</h3>
<p>입력으로 주어진 8자리 날짜를 연, 월, 일 분리
숫자로 받을 것인가
문자열로 받을 것인가
자리수에 따라 날짜 분리를 위해 문자열로 받는다.
<strong>출력시 한자리 수의 경우 앞에 0이 붙어야 한다.</strong>
하드 코딩을 통해 날짜 성립 조건 확인
날짜 성립 조건인 <strong>1~12월의 경우 30일, 31일 분리하여 선언
2월의 경우 28일</strong>까지
날짜의 경우 01 ~ 31 리스트 선언, 각 월의 최대 날짜까지 <strong>슬라이싱</strong>으로 사용</p>
<p>출력시 숫자(테스트케이스 번호)와 문자열(결과)를 출력하기 위해 <strong>포맷 형식</strong>에 유의할 것</p>
<h3 id="소스코드">소스코드</h3>
<pre><code class="language-python">T = int(input())

testcase = []

for i in range(T):
  testcase.append(input())

thirty = [&#39;04&#39;, &#39;06&#39;, &#39;09&#39;, &#39;11&#39;]
thirty_one = [&#39;01&#39;, &#39;03&#39;, &#39;05&#39;, &#39;07&#39;, &#39;08&#39;, &#39;10&#39;, &#39;12&#39;]

days = []
for i in range(1, 32):
  day = &#39;&#39;
  if i &lt; 10:
    day += &#39;0&#39; + str(i)
    days.append(day)
  else:
    day = str(i)
    days.append(day)


for i in range(T):
  year = testcase[i][:4]
  month = testcase[i][4:6]
  day = testcase[i][6:8]
  result = year+&#39;/&#39;+month+&#39;/&#39;+day

  if month not in thirty and month not in thirty_one and month != &#39;02&#39;:
    result = &#39;-1&#39;
  elif month in thirty:
    if day not in days[:31]:
      result = &#39;-1&#39;
  elif month in thirty_one:
    if day not in days:
      result = &#39;-1&#39;
  elif month == &#39;02&#39;:
    if day not in days[:29]:
      result = &#39;-1&#39;

  print(&quot;#%d %s&quot;%((i+1), result))</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[SW Expert Academy] D2 1204번 [S/W 문제해결 기본] 1일차 - 최빈수 구하기(python)]]></title>
            <link>https://velog.io/@good_da22/SW-Expert-Academy-D2-1204%EB%B2%88-SW-%EB%AC%B8%EC%A0%9C%ED%95%B4%EA%B2%B0-%EA%B8%B0%EB%B3%B8-1%EC%9D%BC%EC%B0%A8-%EC%B5%9C%EB%B9%88%EC%88%98-%EA%B5%AC%ED%95%98%EA%B8%B0python</link>
            <guid>https://velog.io/@good_da22/SW-Expert-Academy-D2-1204%EB%B2%88-SW-%EB%AC%B8%EC%A0%9C%ED%95%B4%EA%B2%B0-%EA%B8%B0%EB%B3%B8-1%EC%9D%BC%EC%B0%A8-%EC%B5%9C%EB%B9%88%EC%88%98-%EA%B5%AC%ED%95%98%EA%B8%B0python</guid>
            <pubDate>Wed, 04 May 2022 06:06:38 GMT</pubDate>
            <description><![CDATA[<h1 id="sw-expert-academy">SW Expert Academy</h1>
<h2 id="d2-1204번-sw-문제해결-기본-1일차---최빈수-구하기--python">D2 1204번 [S/W 문제해결 기본] 1일차 - 최빈수 구하기 / Python</h2>
<p><a href="https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&amp;problemLevel=2&amp;problemLevel=3&amp;contestProbId=AV13zo1KAAACFAYh&amp;categoryId=AV13zo1KAAACFAYh&amp;categoryType=CODE&amp;problemTitle=&amp;orderBy=RECOMMEND_COUNT&amp;selectCodeLang=ALL&amp;select-1=3&amp;pageSize=10&amp;pageIndex=1">문제</a></p>
<h3 id="풀이과정">풀이과정</h3>
<p>0 ~ 100점 사이 최빈 수 구하기
정해진 범위의 정수 형태, <strong>계수 정렬</strong>
동일한 최빈 수가 있을 때 높은 점수를 출력, <strong>뒤에서 부터 큰 값을 찾자</strong>
입력과 출력을 분리, <strong>내가 보기 편하게</strong></p>
<h3 id="소스코드">소스코드</h3>
<pre><code class="language-python">T = int(input())

def sovle(grade):
  d = [0] * 101

  for i in range(1000):
    d[grade[i]] += 1 #계수정렬

  max = 0
  result = 0
  for i in range(0, 101):
    if d[-1-i] &gt; max: #뒤에서 확인
      max = d[-1-i]
      result = 101-1-i #최빈수의 인덱스

  return result

answer = []

for i in range(1, T+1):
  n = int(input())
  grade = list(map(int, input().split()))
  result = sovle(grade)
  answer.append(result)

for test_case in range(1, T+1):
  print(&quot;#{} {}&quot;.format(test_case, answer[test_case-1]))</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[SW Expert Academy] D3 1206번 [S/W 문제해결 기본] 1일차 - View(python)]]></title>
            <link>https://velog.io/@good_da22/SW-Expert-Academy-D3-1206%EB%B2%88-SW-%EB%AC%B8%EC%A0%9C%ED%95%B4%EA%B2%B0-%EA%B8%B0%EB%B3%B8-1%EC%9D%BC%EC%B0%A8-Viewpython</link>
            <guid>https://velog.io/@good_da22/SW-Expert-Academy-D3-1206%EB%B2%88-SW-%EB%AC%B8%EC%A0%9C%ED%95%B4%EA%B2%B0-%EA%B8%B0%EB%B3%B8-1%EC%9D%BC%EC%B0%A8-Viewpython</guid>
            <pubDate>Tue, 03 May 2022 12:35:59 GMT</pubDate>
            <description><![CDATA[<h1 id="sw-expert-academy">SW Expert Academy</h1>
<h2 id="d3-1206번-sw-문제해결-기본-1일차---view--python">D3 1206번 [S/W 문제해결 기본] 1일차 - View / Python</h2>
<p><a href="https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV134DPqAA8CFAYh">문제</a></p>
<h3 id="풀이과정">풀이과정</h3>
<p>조망권이 성립되는 조건, <strong>양쪽의 거리 최소 2이상</strong> 확보
거리 확보 위해선 거리 2 이내의 빌딩보다 높이가 높아야 한다.
왼쪽 빌딩과의 높이 계산, 오른쪽 빌딩과의 높이 계산 후
<strong>양쪽 빌딩보다 높은 층(왼쪽, 오른쪽 둘 중에서 작은 값)</strong>을 계산</p>
<h3 id="소스코드">소스코드</h3>
<pre><code class="language-python">t = 10

answer = []

for i in range(t):
  n = int(input())
  height = list(map(int, input().split()))

  result = 0
  for j in range(2, n-2):
    left = height[j] - max(height[j-1], height[j-2])
    right = height[j] - max(height[j+1], height[j+2])
    if left &gt; 0 and right &gt; 0:
      result = min(left, right)

  answer.append(result)

for i in range(t):
  print(&quot;#%d %d&quot; %(i+1, answer[i]))</code></pre>
]]></description>
        </item>
    </channel>
</rss>