<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>JINIers</title>
    <link>https://jiniers.tistory.com/</link>
    <description>빙글빙글
어리둥절
얼레벌레
돌아가는
덕후의하루</description>
    <language>ko</language>
    <pubDate>Wed, 12 Aug 2026 19:49:08 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>JINIers</managingEditor>
    <image>
      <title>JINIers</title>
      <url>https://tistory1.daumcdn.net/tistory/5021266/attach/3abb33c931754e68bed3514ea0b32aa8</url>
      <link>https://jiniers.tistory.com</link>
    </image>
    <item>
      <title>오랫동안 사용 안 한 블로그를 내가 어 떻 게 기억하냐고</title>
      <link>https://jiniers.tistory.com/155</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;깃이랑 노션 등등 떠돌다가 코드를 올려서 관리하는 건 깃이 제일 편하다는 사실을 깨닫고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요새 깃헙을 쓰고 있읍니다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 내가 블로그를 너무 방치하였슨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;깃은 이미지파일이랑 막 이런거저런거 마크다운으로 써서 하는데도 가끔 너무 복잡해서 어지러울 때가 있었기 때문에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;걍 번갈아가며 쓰기로 함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사유 : k8s 강의를 들으면서 각성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노션도 나랑 좀 안맞고.. 이미지나 정리한 것들 올려서 쓰기엔 티스토리가 제일 편해서(낡은이)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;깃이랑 같이 써야지...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/Song1610&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;깃주소&lt;/a&gt;&lt;/p&gt;</description>
      <category>잡다구리</category>
      <author>JINIers</author>
      <guid isPermaLink="true">https://jiniers.tistory.com/155</guid>
      <comments>https://jiniers.tistory.com/155#entry155comment</comments>
      <pubDate>Thu, 7 Aug 2025 17:16:58 +0900</pubDate>
    </item>
    <item>
      <title>Day 9</title>
      <link>https://jiniers.tistory.com/154</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;아니 왜케..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;머리가 돌이 된 것같지..&lt;/p&gt;
&lt;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;&lt;b&gt;# Dictionary&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;list와 약간 다름&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;dictionary는 키가 식별하는 요소가 있음&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;{&quot;key&quot; : value}&lt;/p&gt;
&lt;pre id=&quot;code_1718780948192&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# {&quot;key&quot;: value}
programming_dictionary = {
    &quot;Bug&quot;:
    &quot;An error in a program that prevents the program from running as expected.&quot;,
    &quot;Function&quot;:
    &quot;A piece of code that you can easily call over and over again.&quot;,
    &quot;Loop&quot;: &quot;The action of doing something over and over again.&quot;
}

list[0] &amp;amp; dictionary 차이점
사전은 키가 식별하는 요소가 있음

# retrieving items from dictionary.
print(programming_dictionary[&quot;Bug&quot;])

문제 : 올바른 function을 사용하지 않음
ㄴ 데이터 형식에서 키를 제공하도록 해야함
Loop: &quot;The action of doing something over and over again.&quot;
ㄴ KeyError: 'Loop'
9 : &quot;seveteen members 9th.&quot;
print(programming_dictionary[9])  &amp;rarr; 출력됨

# adding new items to dictionary.
programming_dictionary[&quot;svt&quot;] = &quot;seventeen is k-pop idol.&quot;

# create an empty dictionary
empty_dictionary = {}
empty_dictionary = []  # add function

# wipe an existion dictionary
programming_dictionary = {}
print(programming_dictionary)

# edit an iten in a dictionary
programming_dictionary[&quot;Bug&quot;] = &quot;A moth in your computer.&quot;

# loop through a dictionary
for key in programming_dictionary:
  print(key)
  print(programming_dictionary[key])&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;Grading Program&lt;/p&gt;
&lt;pre id=&quot;code_1718780878997&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# TODO-1: Create an empty dictionary called student_grades.
student_grades = {}

# TODO-2: Write your code below to add the grades to student_grades. 

for student in student_scores:
    score = student_scores[student]
    if score &amp;gt; 90:
        student_grades[student] = &quot;Outstanding&quot;
    elif score &amp;gt; 80:
        student_grades[student] = &quot;Exceeds Expectations&quot;
    elif score &amp;gt; 70:
        student_grades[student] = &quot;Acceptable&quot;
    elif score &amp;lt; 70:
        student_grades[student] = &quot;Fail&quot;&lt;/code&gt;&lt;/pre&gt;</description>
      <category>공부/Python</category>
      <author>JINIers</author>
      <guid isPermaLink="true">https://jiniers.tistory.com/154</guid>
      <comments>https://jiniers.tistory.com/154#entry154comment</comments>
      <pubDate>Wed, 19 Jun 2024 16:10:43 +0900</pubDate>
    </item>
    <item>
      <title>Day 8 cipher</title>
      <link>https://jiniers.tistory.com/153</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;cipher 1&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1718589692755&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z','a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

direction = input(&quot;Type 'encode' to encrypt, type 'decode' to decrypt:\n&quot;)
text = input(&quot;Type your message:\n&quot;).lower()
shift = int(input(&quot;Type the shift number:\n&quot;))

#TODO-1: Create a function called 'encrypt' that takes the 'text' and 'shift' as inputs.
#TODO-1: 'text'와 'shift'를 입력으로 사용하는 'encrypt'라는 함수를 만듭니다.
def encrypt(plain_text, shift_amount):
    cipher_text = &quot;&quot;
    for letter in plain_text:
        position = alphabet.index(letter)
        new_position = position + shift_amount
        new_letter = alphabet[new_position]
        cipher_text += new_letter
    print(f&quot;This : {cipher_text}&quot;)
        
    #TODO-2: Inside the 'encrypt' function, shift each letter of the 'text' forwards in the alphabet by the shift amount and print the encrypted text.
    #TODO-2: 'encrypt' 함수 내에서 'text'의 각 문자를 알파벳에서 이동량만큼 앞으로 이동하고 암호화된 텍스트를 인쇄합니다.
    #e.g. 
    #plain_text = &quot;hello&quot;
    #shift = 5
    #cipher_text = &quot;mjqqt&quot;
    #print output: &quot;The encoded text is mjqqt&quot;

    
    ##HINT: How do you get the index of an item in a list:
    # https://stackoverflow.com/questions/176918/finding-the-index-of-an-item-in-a-list

    ## Bug alert: What happens if you try to encode the word 'civilization'? 

#TODO-3: Call the encrypt function and pass in the user inputs. You should be able to test the code and encrypt a message.
#TODO-3: 암호화 기능을 호출하고 사용자 입력을 전달합니다. 코드를 테스트하고 메시지를 암호화할 수 있어야 합니다.
encrypt(plain_text=text, shift_amount=shift)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# cipher 2&lt;/p&gt;
&lt;pre id=&quot;code_1718589812704&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;alphabet = [
    'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
    'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'a', 'b', 'c', 'd',
    'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
    't', 'u', 'v', 'w', 'x', 'y', 'z'
]

direction = input(&quot;Type 'encode' to encrypt, type 'decode' to decrypt:\n&quot;)
text = input(&quot;Type your message:\n&quot;).lower()
shift = int(input(&quot;Type the shift number:\n&quot;))


def encrypt(plain_text, shift_amount):
    cipher_text = &quot;&quot;  # 빈 변수 정의
    for letter in plain_text:
        position = alphabet.index(letter)
        new_position = position + shift_amount
        cipher_text += alphabet[new_position]
    print(f&quot;The encoded text is {cipher_text}&quot;)


#TODO-1: Create a different function called 'decrypt' that takes the 'text' and 'shift' as inputs.
#TODO-1: 'text'와 'shift'를 입력으로 사용하는 'decrypt'라는 다른 함수를 만듭니다.


#TODO-2: Inside the 'decrypt' function, shift each letter of the 'text' *backwards* in the alphabet by the shift amount and print the decrypted text.
#TODO-2: 'decrypt' 함수 내에서 'text'의 각 문자를 알파벳에서 *뒤로* 이동한 양만큼 이동하고 해독된 텍스트를 인쇄합니다.
#e.g.
#cipher_text = &quot;mjqqt&quot;
#shift = 5
#plain_text = &quot;hello&quot;
#print output: &quot;The decoded text is hello&quot;
def decrypt(cipher_text, shift_a):
    plain_text = &quot;&quot;  # 빈 변수 정의
    for i in cipher_text:
        de_position = alphabet.index(i)
        plain_position = de_position - shift_a
        decrypt_text = alphabet[plain_position]
        plain_text += decrypt_text
        # decrypt_text += alphabet[plain_position] 와 같다.
    print(f&quot;The decoded text is {plain_text}&quot;)


#TODO-3: Check if the user wanted to encrypt or decrypt the message by checking the 'direction' variable. Then call the correct function based on that 'drection' variable. You should be able to test the code to encrypt *AND* decrypt a message.
#TODO-3: 'direction' 변수를 확인하여 사용자가 메시지를 암호화하거나 해독하기를 원했는지 확인하세요. 그런 다음 해당 '방향' 변수를 기반으로 올바른 함수를 호출하십시오. 메시지를 암호화하고 *복호화하는 코드를 테스트할 수 있어야 합니다.

if direction == &quot;encode&quot;:
  encrypt(plain_text=text, shift_amount=shift)
elif direction == &quot;decode&quot;:
  decrypt(cipher_text=text, shift_a=shift)&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;cipher 1+2&lt;/p&gt;
&lt;pre id=&quot;code_1718589554504&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z','a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

direction = input(&quot;Type 'encode' to encrypt, type 'decode' to decrypt:\n&quot;)
text = input(&quot;Type your message:\n&quot;).lower()    # svt
shift = int(input(&quot;Type the shift number:\n&quot;))  # 3

# TODO-1: 'text'와 'shift'를 입력으로 사용하는 'encrypt'라는 함수를 만듭니다.
# TODO-2: 'encrypt' 함수 내에서 'text'의 각 문자를 알파벳에서 이동량만큼 앞으로 이동하고 암호화된 텍스트를 인쇄합니다.
# TODO-3: 암호화 기능을 호출하고 사용자 입력을 전달합니다. 코드를 테스트하고 메시지를 암호화할 수 있어야 합니다.
def encrypt(pt, sh):    # def encrypt(svt, 3)
    encrypt_txt = &quot;&quot;
    for letter in pt:   # for letter in s = 27
        position = alphabet.index(letter)   # position = 27
        new_position = position + sh  # 30
        new_letter = alphabet[new_position]
        encrypt_txt += new_letter
    print(f&quot;encrypt text : {encrypt_txt}&quot;)


#TODO-1: 'text'와 'shift'를 입력으로 사용하는 'decrypt'라는 다른 함수를 만듭니다.
#TODO-2: 'decrypt' 함수 내에서 'text'의 각 문자를 알파벳에서 *뒤로* 이동한 양만큼 이동하고 해독된 텍스트를 인쇄합니다.
#TODO-3: 'direction' 변수를 확인하여 사용자가 메시지를 암호화하거나 해독하기를 원했는지 확인하세요. 그런 다음 해당 '방향' 변수를 기반으로 올바른 함수를 호출하십시오. 메시지를 암호화하고 *복호화하는 코드를 테스트할 수 있어야 합니다.
def decrypt(entxt, desh):       #def decrypt(vyw, 3)
    decrypt_txt = &quot;&quot;
    for letter in entxt:    # for letter in vyw -&amp;gt; v
        position = alphabet.index(letter)  #alphabet.index(v) = 26
        new_position = position - desh  # 23
        new_letter = alphabet[new_position] # s
        decrypt_txt += new_letter
    print (f&quot;decrypt_text : {decrypt_txt}&quot;)

if direction == &quot;encode&quot;:
    encrypt(pt = text, sh = shift)  # pt = plain text = svt / sh = 3
elif direction == &quot;decode&quot;:
    decrypt(entxt = text, desh = shift) # decrypt(entxt = vyw, desh = 3)
    # entxt = encrypt text / desh = decrypt shift&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;thonny가 진짜 많이 도움이 됐다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음엔 뭔말인지 모름+이해안됨 콜라보로 안젤라가 작성한 코드를 토니 돌려서 이해했는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이해하고나니 작성하기 훨씬 쉬웠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# cipher 3(내가 작성한 코드)&lt;/p&gt;
&lt;pre id=&quot;code_1718598289816&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z','a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

direction = input(&quot;Type 'encode' to encrypt, type 'decode' to decrypt:\n&quot;)
text = input(&quot;Type your message:\n&quot;).lower()    # svt
shift = int(input(&quot;Type the shift number:\n&quot;))  # 3

# cipher 3
#TODO-1: encrypt() 및 decrypt() 함수를 caesar()라는 단일 함수로 결합합니다.
#TODO-2: 'text', 'shift' 및 'direction' 값을 전달하여 Caesar() 함수를 호출합니다.
def caesar(txt, sh, dr):
    if dr == &quot;encode&quot;:
        encrypt_txt = &quot;&quot;
        for letter in txt:
            position = alphabet.index(letter)
            new_position = position + sh
            new_letter = alphabet[new_position]
            encrypt_txt += new_letter
        print(f&quot;encrypt text : {encrypt_txt}&quot;)
    elif dr == &quot;decode&quot;:
        decrypt_txt = &quot;&quot;
        for letter in txt:
            position = alphabet.index(letter)
            new_position = position - sh
            new_letter = alphabet[new_position]
            decrypt_txt += new_letter
        print (f&quot;decrypt_text : {decrypt_txt}&quot;)

caesar(txt = text, sh = shift, dr = direction)&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;pre id=&quot;code_1718598338268&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;alphabet = [
    'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
    'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'a', 'b', 'c', 'd',
    'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
    't', 'u', 'v', 'w', 'x', 'y', 'z'
]

direction = input(&quot;Type 'encode' to encrypt, type 'decode' to decrypt:\n&quot;)
text = input(&quot;Type your message:\n&quot;).lower()
shift = int(input(&quot;Type the shift number:\n&quot;))


#TODO-1: Combine the encrypt() and decrypt() functions into a single function called caesar().
#TODO-1: encrypt() 및 decrypt() 함수를 caesar()라는 단일 함수로 결합합니다.

def caesar(start_text, shift_amount, cipher_direction):
    end_text = &quot;&quot;
    if cipher_direction == &quot;decode&quot;:
        shift_amount *= -1
    for letter in start_text:
        position = alphabet.index(letter)
        new_position = position + shift_amount
        end_text += alphabet[new_position]
    print(f&quot;The {cipher_direction}d text is {end_text}&quot;)




#TODO-2: Call the caesar() function, passing over the 'text', 'shift' and 'direction' values.
#TODO-2: 'text', 'shift' 및 'direction' 값을 전달하여 Caesar() 함수를 호출합니다.
caesar(start_text=text, shift_amount=shift, cipher_direction=direction)&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;pre id=&quot;code_1718600209371&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def caesar(txt, sh, dr):
    end_txt = &quot;&quot;
    if dr == &quot;decode&quot;:
        sh = sh * -1
    for letter in txt:
        position = alphabet.index(letter)
        new_position = position + sh
        new_letter = alphabet[new_position]
        end_txt += new_letter
    print(f&quot;{dr} &amp;rarr; {end_txt}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# cipher 4&lt;/p&gt;
&lt;pre id=&quot;code_1718603538526&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z','a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

# cipher 4

for art import logo    #todo-1
def caesar(txt, sh, dr):
    end_txt = &quot;&quot;
    if dr == &quot;decode&quot;:
        sh = sh * -1
    # todo-3
    for char in txt:
        if char in alphabet:
            position = alphabet.index(char)
            new_position = position + sh
            new_char = alphabet[new_position]
            end_txt += new_char
        else:
            end_txt += char
    print(f&quot;{dr} &amp;rarr; {end_txt}&quot;)


restart = True
while restart:
    direction = input(&quot;Type 'encode' to encrypt, type 'decode' to decrypt:\n&quot;)
    text = input(&quot;Type your message:\n&quot;).lower()
    shift = int(input(&quot;Type the shift number:\n&quot;))
    shift = shift % 26  #todo-2
    caesar(txt = text, sh = shift, dr = direction)

    #todo-4
    result = input(&quot;again = 'yes' or not = 'no'.\n&quot;)
    if result == 'no':
        restart = False
        print(&quot;Goodbye~!&quot;)&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;encode test&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;383&quot; data-origin-height=&quot;158&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTqDI1/btsH2T4AMLE/TK22EvKsBXYFeFKK6GyHd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTqDI1/btsH2T4AMLE/TK22EvKsBXYFeFKK6GyHd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTqDI1/btsH2T4AMLE/TK22EvKsBXYFeFKK6GyHd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTqDI1%2FbtsH2T4AMLE%2FTK22EvKsBXYFeFKK6GyHd0%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;383&quot; height=&quot;158&quot; data-origin-width=&quot;383&quot; data-origin-height=&quot;158&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;decode &amp;amp; end test&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;376&quot; data-origin-height=&quot;173&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RGyGl/btsH2piC1k4/dwHQO4l8j6VLrC6pzE7k3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RGyGl/btsH2piC1k4/dwHQO4l8j6VLrC6pzE7k3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RGyGl/btsH2piC1k4/dwHQO4l8j6VLrC6pzE7k3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRGyGl%2FbtsH2piC1k4%2FdwHQO4l8j6VLrC6pzE7k3K%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;376&quot; height=&quot;173&quot; data-origin-width=&quot;376&quot; data-origin-height=&quot;173&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>공부/Python</category>
      <author>JINIers</author>
      <guid isPermaLink="true">https://jiniers.tistory.com/153</guid>
      <comments>https://jiniers.tistory.com/153#entry153comment</comments>
      <pubDate>Mon, 17 Jun 2024 11:03:42 +0900</pubDate>
    </item>
    <item>
      <title>Day 8 def</title>
      <link>https://jiniers.tistory.com/152</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;# Function의 기본유형(def)&lt;/p&gt;
&lt;pre id=&quot;code_1718588713129&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# funtion의 기본 유형
'''
def my_function():
  여기에 적절한걸 넣으면 됨
'''

# Review: 
# Create a function called greet(). 
# Write 3 print statements inside the function.
# Call the greet() function and run your code.
# Greeting()이라는 함수를 만듭니다.
# 함수 안에 3개의 print 문을 작성합니다.
# Greeting() 함수를 호출하고 코드를 실행합니다.

def greet():
  print(&quot;no.1&quot;),
  print(&quot;no.2&quot;),
  print(&quot;no.3&quot;),
  print(&quot;&quot;)
greet()


# function wuth inputs
'''
def my_function(something):    # 괄호 안에 변수의 이름 추가
  이것
  저것
  그것
'''

def greet_with_name(name):
  print(f&quot;hi, {name}!&quot;)
  print(f&quot;how do you do {name}!&quot;)
  print(&quot;&quot;)

greet_with_name(&quot;mingyu&quot;)

############################
# function that allow for input
'''
parameter : 전달되는 데이터의 이름
argument : 데이터의 실제 값
'''

# function with more than 1 input
def greet_with(name, location):
  print(f&quot;hello {name}!&quot;)
  print(f&quot;what is it like in {location}&quot;)
  print(&quot;&quot;)
greet_with(&quot;jun&quot;,&quot;china&quot;)
#         ---------------- &amp;lt;- positional Argument

# keyword arguments
''' def my_function(a=1, b=2, c=3):
  this b
  that c
  else a
print -&amp;gt; this 2, that 3, else 1
'''

greet_with(location= &quot;cadana&quot;, name=&quot;mingyu&quot;)&lt;/code&gt;&lt;/pre&gt;</description>
      <category>공부/Python</category>
      <author>JINIers</author>
      <guid isPermaLink="true">https://jiniers.tistory.com/152</guid>
      <comments>https://jiniers.tistory.com/152#entry152comment</comments>
      <pubDate>Mon, 17 Jun 2024 10:45:40 +0900</pubDate>
    </item>
    <item>
      <title>SCP Open API</title>
      <link>https://jiniers.tistory.com/151</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;postman 이용 사용법&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;Headers 설정&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;727&quot; data-origin-height=&quot;328&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PeBhv/btsHiqDLvHD/h5LKVZ9I80uRKYHPu0VVnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PeBhv/btsHiqDLvHD/h5LKVZ9I80uRKYHPu0VVnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PeBhv/btsHiqDLvHD/h5LKVZ9I80uRKYHPu0VVnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPeBhv%2FbtsHiqDLvHD%2Fh5LKVZ9I80uRKYHPu0VVnK%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;727&quot; height=&quot;328&quot; data-origin-width=&quot;727&quot; data-origin-height=&quot;328&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;scripts 설정(Pre-request)&lt;/p&gt;
&lt;pre id=&quot;code_1715239959757&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// OpenAPI Information
var method = &quot;GET&quot;;
var url = &quot;https://openapi.samsungsdscloud.com/project/v2/projects/products/resources&quot;;
var timestamp = Date.now();
var accessKey = &quot;[accesskey값]&quot;;
var secretKey = &quot;[secretkey값]&quot;;
var projectId = &quot;[프로젝트-id]&quot;;
var clientType = &quot;OpenApi&quot;;


// Make Signature
function makeSignature() {
    url = encodeURI(url); // 한글, 특수 문자 처리

    var message = method + url + timestamp + accessKey + projectId + clientType;

    var hash = require('crypto-js').HmacSHA256(message, secretKey);
    return require('crypto-js').enc.Base64.stringify(hash);
}


// Set variables
pm.variables.set(&quot;accessKey&quot;, accessKey)
pm.variables.set(&quot;signature&quot;, makeSignature());
pm.variables.set(&quot;timestamp&quot;, timestamp);
pm.variables.set(&quot;clientType&quot;, clientType);
pm.variables.set(&quot;projectId&quot;, projectId);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;프로젝트 키 값 : 사용 X&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;공통 키 값 : 사용O&lt;/b&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;결과값▼&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1902&quot; data-origin-height=&quot;48&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dIbpor/btsHjt7DmIn/ku0dB1D7GZSKk6msBWVdkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dIbpor/btsHjt7DmIn/ku0dB1D7GZSKk6msBWVdkK/img.png&quot; data-alt=&quot;'200'이 떠야함&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dIbpor/btsHjt7DmIn/ku0dB1D7GZSKk6msBWVdkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdIbpor%2FbtsHjt7DmIn%2Fku0dB1D7GZSKk6msBWVdkK%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;2267&quot; height=&quot;57&quot; data-origin-width=&quot;1902&quot; data-origin-height=&quot;48&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;'200'이 떠야함&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1915&quot; data-origin-height=&quot;1005&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IfoYI/btsHitmWkyj/8o9yxZVO4KGzQ2YeKW4JgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IfoYI/btsHitmWkyj/8o9yxZVO4KGzQ2YeKW4JgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IfoYI/btsHitmWkyj/8o9yxZVO4KGzQ2YeKW4JgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIfoYI%2FbtsHitmWkyj%2F8o9yxZVO4KGzQ2YeKW4JgK%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;1915&quot; height=&quot;1005&quot; data-origin-width=&quot;1915&quot; data-origin-height=&quot;1005&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>공부/기타</category>
      <author>JINIers</author>
      <guid isPermaLink="true">https://jiniers.tistory.com/151</guid>
      <comments>https://jiniers.tistory.com/151#entry151comment</comments>
      <pubDate>Thu, 9 May 2024 16:34:24 +0900</pubDate>
    </item>
    <item>
      <title>[Python 100 day challenge ] Day 6 - 허들</title>
      <link>https://jiniers.tistory.com/150</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Day 6는 허들을 뛰어야했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1282&quot; data-origin-height=&quot;544&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTaQU5/btsGN29UdG6/wCDDYO1kVBMukmQksRNpx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTaQU5/btsGN29UdG6/wCDDYO1kVBMukmQksRNpx0/img.png&quot; data-alt=&quot;이런 허들임&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTaQU5/btsGN29UdG6/wCDDYO1kVBMukmQksRNpx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTaQU5%2FbtsGN29UdG6%2FwCDDYO1kVBMukmQksRNpx0%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;1282&quot; height=&quot;544&quot; data-origin-width=&quot;1282&quot; data-origin-height=&quot;544&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이런 허들임&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이걸 하기 위해 function을 배웠다&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;# function&lt;/b&gt;&lt;/h3&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;# def : 함수생성 &amp;amp; 함수 정의(defining function)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;def 의 기본 틀&lt;/p&gt;
&lt;pre id=&quot;code_1713611482064&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def my_function():
    print(&quot;hello&quot;)
    print(&quot;bye&quot;)
    
my_function()			# 호출함수&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;호출함수(calling functions) 라고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수 설정 할 때 들여쓰기가 중요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;# indentation&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;tab으로 들여쓰기 : 4칸&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스페이스바로 들여쓰기 : 1칸&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;# while loops&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;while 기본 틀&lt;/p&gt;
&lt;pre id=&quot;code_1713611766849&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;while something_is_true:
  # do something repeatedly&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;for가 어떤 범위에서 반복하는 것이라면 while은 특정조건이 참일 경우에만 작동한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;False일 땐 작동하지 않는다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에 function 기본개념을 배우고 허들을 4단계까지 짠다!&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;#step 1&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1272&quot; data-origin-height=&quot;554&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IoL4j/btsGNa1X9aR/YazFNpDKVmysfUqWMGXVP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IoL4j/btsGNa1X9aR/YazFNpDKVmysfUqWMGXVP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IoL4j/btsGNa1X9aR/YazFNpDKVmysfUqWMGXVP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIoL4j%2FbtsGNa1X9aR%2FYazFNpDKVmysfUqWMGXVP1%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;1272&quot; height=&quot;554&quot; data-origin-width=&quot;1272&quot; data-origin-height=&quot;554&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나 ▼&lt;/p&gt;
&lt;pre id=&quot;code_1713616081438&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def turn_right():
    turn_left()
    turn_left()
    turn_left()
    
def jump():
  turn_left()
  move()
  turn_right()
  move()
  turn_right()
  move()
  turn_left()

for step in range(6):
    move()
    jump()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1290&quot; data-origin-height=&quot;546&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EFyuy/btsGMfCUOrz/zKUyol79osGV8HjYj72wc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EFyuy/btsGMfCUOrz/zKUyol79osGV8HjYj72wc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EFyuy/btsGMfCUOrz/zKUyol79osGV8HjYj72wc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEFyuy%2FbtsGMfCUOrz%2FzKUyol79osGV8HjYj72wc1%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;1290&quot; height=&quot;546&quot; data-origin-width=&quot;1290&quot; data-origin-height=&quot;546&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안젤라 ▼&lt;/p&gt;
&lt;pre id=&quot;code_1713615888670&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;number_hurdles = 6
while number_hurdles &amp;gt; 0:
    move()
    jump()
    number_hurdles -= 1
    print(number_hurdles)&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;# step 2&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두번째는 랜덤으로 목적지 위치가 바뀐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;목적지까지만 도달하면 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1288&quot; data-origin-height=&quot;542&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uROKN/btsGN1Xv9sd/aCE5fLQ7NgjNWy0Or1Qzx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uROKN/btsGN1Xv9sd/aCE5fLQ7NgjNWy0Or1Qzx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uROKN/btsGN1Xv9sd/aCE5fLQ7NgjNWy0Or1Qzx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuROKN%2FbtsGN1Xv9sd%2FaCE5fLQ7NgjNWy0Or1Qzx0%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;1288&quot; height=&quot;542&quot; data-origin-width=&quot;1288&quot; data-origin-height=&quot;542&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1713616227825&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;while not at_goal():
  move()
  jump()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1284&quot; data-origin-height=&quot;550&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bogYEc/btsGL3o5XrC/MYHuuMk91lBGyRHvRrEDZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bogYEc/btsGL3o5XrC/MYHuuMk91lBGyRHvRrEDZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bogYEc/btsGL3o5XrC/MYHuuMk91lBGyRHvRrEDZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbogYEc%2FbtsGL3o5XrC%2FMYHuuMk91lBGyRHvRrEDZk%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;1284&quot; height=&quot;550&quot; data-origin-width=&quot;1284&quot; data-origin-height=&quot;550&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;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;# step 3&lt;/b&gt;&lt;/h4&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;1272&quot; data-origin-height=&quot;544&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfi6Zo/btsGOuylSVc/NlPltG13Roo85PKizRkmlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfi6Zo/btsGOuylSVc/NlPltG13Roo85PKizRkmlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfi6Zo/btsGOuylSVc/NlPltG13Roo85PKizRkmlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcfi6Zo%2FbtsGOuylSVc%2FNlPltG13Roo85PKizRkmlK%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;1272&quot; height=&quot;544&quot; data-origin-width=&quot;1272&quot; data-origin-height=&quot;544&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1713616563911&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;while not at_goal():
  if wall_in_front():
      jump()
  elif front_is_clear():
      move()&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;pre id=&quot;code_1713616671067&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;while not at_goal():
  if wall_in_front():
    jump()
  else:
    move()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1292&quot; data-origin-height=&quot;546&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LmbPn/btsGNttmT6y/srCgWNVc21jugqnmTLevK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LmbPn/btsGNttmT6y/srCgWNVc21jugqnmTLevK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LmbPn/btsGNttmT6y/srCgWNVc21jugqnmTLevK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLmbPn%2FbtsGNttmT6y%2FsrCgWNVc21jugqnmTLevK1%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;1292&quot; height=&quot;546&quot; data-origin-width=&quot;1292&quot; data-origin-height=&quot;546&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;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;# step 4&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;허들 4.. .너무 어려웠다..&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1282&quot; data-origin-height=&quot;546&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beUgW7/btsGNfvhs7c/nZ6TvXPow3L7kndhkchpk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beUgW7/btsGNfvhs7c/nZ6TvXPow3L7kndhkchpk1/img.png&quot; data-alt=&quot;이건 허들이 아니고 탑이잖아요.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beUgW7/btsGNfvhs7c/nZ6TvXPow3L7kndhkchpk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeUgW7%2FbtsGNfvhs7c%2FnZ6TvXPow3L7kndhkchpk1%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;1282&quot; height=&quot;546&quot; data-origin-width=&quot;1282&quot; data-origin-height=&quot;546&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이건 허들이 아니고 탑이잖아요.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;진짜..&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;750&quot; data-origin-height=&quot;750&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/65PNM/btsGNHycIFG/XyMcBEZOhVIEYct9VsHetk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/65PNM/btsGNHycIFG/XyMcBEZOhVIEYct9VsHetk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/65PNM/btsGNHycIFG/XyMcBEZOhVIEYct9VsHetk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F65PNM%2FbtsGNHycIFG%2FXyMcBEZOhVIEYct9VsHetk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;238&quot; height=&quot;238&quot; data-origin-width=&quot;750&quot; data-origin-height=&quot;750&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;진짜 개띠용띠용 너무 어려워&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;b&gt;실패작 #1&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1713616877312&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;while not at_goal():
  if wall_in_front():
      turn_left()
      if wall_on_right():
          move()
      else:
          turn_right()
  elif front_is_clear() and right_is_clear():
      jump()
  elif front_is_clear():
      move()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;550&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnEwLS/btsGNg8QSlf/bcnenF181RXXJOCaChtVeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnEwLS/btsGNg8QSlf/bcnenF181RXXJOCaChtVeK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnEwLS/btsGNg8QSlf/bcnenF181RXXJOCaChtVeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnEwLS%2FbtsGNg8QSlf%2FbcnenF181RXXJOCaChtVeK%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;1302&quot; height=&quot;550&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;550&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;다시 돌고돌아 제자리로 오겠지. 넵 알겠습니다.&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;실패작 #2&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1713617051058&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def turn_right():
  turn_left()
  turn_left()
  turn_left()
def jump():
  if front_is_clear() and right_is_clear():
      move()
      turn_right()
  elif wall_in_front():
      turn_left()
  else:
      move()

while not at_goal():
 if wall_in_front():
     turn_left()
     if wall_on_right():
         jump()
     else:
         turn_right()
 elif move():
   turn_right()
   move()
 elif front_is_clear():
     move()&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;허들 4는 뭐냐 저거 jump()를 손봐주고 해야함..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게..&lt;/p&gt;
&lt;pre id=&quot;code_1713617127311&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def turn_right():
  turn_left()
  turn_left()
  turn_left()
def jump():
  turn_left()
  while wall_on_right():
    move()
  turn_right()
  move()
  turn_right()
  while front_is_clear():
    move()
  turn_left()


while not at_goal():
  if wall_in_front():
    jump()
  else:
    move()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1284&quot; data-origin-height=&quot;556&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d0VFuu/btsGNC4QZ4c/ECphhHQ1KA9Nsu2IiJXF7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d0VFuu/btsGNC4QZ4c/ECphhHQ1KA9Nsu2IiJXF7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d0VFuu/btsGNC4QZ4c/ECphhHQ1KA9Nsu2IiJXF7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd0VFuu%2FbtsGNC4QZ4c%2FECphhHQ1KA9Nsu2IiJXF7k%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;1284&quot; height=&quot;556&quot; data-origin-width=&quot;1284&quot; data-origin-height=&quot;556&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;내가 학생도 아니고 일주일내내 고민하고 시도해도 안풀리는데 그럼 언제 실무하나요.&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;안그러면 진짜&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;865&quot; data-origin-height=&quot;865&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rYTcA/btsGN1iQYbm/cog8k4teOEHEdCykv5Wd71/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rYTcA/btsGN1iQYbm/cog8k4teOEHEdCykv5Wd71/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rYTcA/btsGN1iQYbm/cog8k4teOEHEdCykv5Wd71/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrYTcA%2FbtsGN1iQYbm%2Fcog8k4teOEHEdCykv5Wd71%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;319&quot; height=&quot;865&quot; data-origin-width=&quot;865&quot; data-origin-height=&quot;865&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드 갈무리가 필요했다.. 절실하게..&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1. Coding Notebook Sheets-5.jpg&quot; data-origin-width=&quot;3086&quot; data-origin-height=&quot;2183&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QeTmi/btsGO9HwkJe/IniFFp2bGq7KRoDgqHfX4K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QeTmi/btsGO9HwkJe/IniFFp2bGq7KRoDgqHfX4K/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QeTmi/btsGO9HwkJe/IniFFp2bGq7KRoDgqHfX4K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQeTmi%2FbtsGO9HwkJe%2FIniFFp2bGq7KRoDgqHfX4K%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3086&quot; height=&quot;2183&quot; data-filename=&quot;1. Coding Notebook Sheets-5.jpg&quot; data-origin-width=&quot;3086&quot; data-origin-height=&quot;2183&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1. Coding Notebook Sheets-6.jpg&quot; data-origin-width=&quot;3086&quot; data-origin-height=&quot;2183&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MRY4c/btsGOcEA5mW/4gU8TUmmKyGvkrkfZS0730/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MRY4c/btsGOcEA5mW/4gU8TUmmKyGvkrkfZS0730/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MRY4c/btsGOcEA5mW/4gU8TUmmKyGvkrkfZS0730/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMRY4c%2FbtsGOcEA5mW%2F4gU8TUmmKyGvkrkfZS0730%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3086&quot; height=&quot;2183&quot; data-filename=&quot;1. Coding Notebook Sheets-6.jpg&quot; data-origin-width=&quot;3086&quot; data-origin-height=&quot;2183&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복잡하게 생각할 필요 없다고 해놓고 개복잡하게 생각함&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;어려우면 일단 알고리즘을 먼저 그려놓고 그대로 작성하는 것도 하나의 방법인 것 같다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;# maze&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;step 4까지 했으면 이제 미로 탈출을 해야함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;얘는 더 어렵다. 봇봇이가 방향을 지멋대로 빙글뱅글 랜덤으로 설정한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;644&quot; data-origin-height=&quot;630&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/x11Gk/btsGM2QwJF2/4spuYNR7YE6oYbkpcMwF8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/x11Gk/btsGM2QwJF2/4spuYNR7YE6oYbkpcMwF8k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/x11Gk/btsGM2QwJF2/4spuYNR7YE6oYbkpcMwF8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fx11Gk%2FbtsGM2QwJF2%2F4spuYNR7YE6oYbkpcMwF8k%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;369&quot; height=&quot;361&quot; data-origin-width=&quot;644&quot; data-origin-height=&quot;630&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;안젤라 Tip!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오른쪽 가장자리를 따라가도록 하고 가능하면 우회전 하라고 했음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 점프를 쓰지 말라고 했다.&lt;/p&gt;
&lt;pre id=&quot;code_1713617439230&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;while not at_goal():
  if right_is_clear() and not wall_in_front():
    move()
  elif wall_in_front() and wall_on_right():
    turn_left()
  elif wall_in_front() and right_is_clear():
    turn_right()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 했을 때&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;634&quot; data-origin-height=&quot;624&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QGxub/btsGOgtut9Z/p4nAxKxTvkSCISHvZ3j9IK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QGxub/btsGOgtut9Z/p4nAxKxTvkSCISHvZ3j9IK/img.png&quot; data-alt=&quot;1보만 가면 되는데...&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QGxub/btsGOgtut9Z/p4nAxKxTvkSCISHvZ3j9IK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQGxub%2FbtsGOgtut9Z%2Fp4nAxKxTvkSCISHvZ3j9IK%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;345&quot; height=&quot;340&quot; data-origin-width=&quot;634&quot; data-origin-height=&quot;624&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;1보만 가면 되는데...&lt;/figcaption&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;앞으로 가시라고요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;825&quot; data-origin-height=&quot;825&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rc61A/btsGMMtEgLs/Hkj0sKzsmXG1ZU7piATbZK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rc61A/btsGMMtEgLs/Hkj0sKzsmXG1ZU7piATbZK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rc61A/btsGMMtEgLs/Hkj0sKzsmXG1ZU7piATbZK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Frc61A%2FbtsGMMtEgLs%2FHkj0sKzsmXG1ZU7piATbZK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;364&quot; height=&quot;825&quot; data-origin-width=&quot;825&quot; data-origin-height=&quot;825&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;근데 안감 당연함 코드를 잘못 짬&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;엉엉울면서(안욺) 안젤라와 함께했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안젤라 당신은 한줄기 빛..&lt;/p&gt;
&lt;pre id=&quot;code_1713617639553&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def turn_right():
   turn_left()
   turn_left()
   turn_left()

while not at_goal():
   if right_is_clear():
      turn_right()
      move()
   elif front_is_clear():
      move()
   else:
      turn_left()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;638&quot; data-origin-height=&quot;634&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGnlIe/btsGMGUAgXl/gVPLnWUdMcj9G5zoy5r0k1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGnlIe/btsGMGUAgXl/gVPLnWUdMcj9G5zoy5r0k1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGnlIe/btsGMGUAgXl/gVPLnWUdMcj9G5zoy5r0k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGnlIe%2FbtsGMGUAgXl%2FgVPLnWUdMcj9G5zoy5r0k1%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;364&quot; height=&quot;362&quot; data-origin-width=&quot;638&quot; data-origin-height=&quot;634&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;얘도 갈무리가 필요했다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이해하고 하기 위한..&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1. Coding Notebook Sheets-7.jpg&quot; data-origin-width=&quot;3086&quot; data-origin-height=&quot;2183&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDjYuk/btsGMAG1GFO/higQDc7F6rRgytR6L2e8b1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDjYuk/btsGMAG1GFO/higQDc7F6rRgytR6L2e8b1/img.jpg&quot; data-alt=&quot;처음엔 이렇게 짜서 했었는데 너무 복잡하게 생각한거였음&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDjYuk/btsGMAG1GFO/higQDc7F6rRgytR6L2e8b1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDjYuk%2FbtsGMAG1GFO%2FhigQDc7F6rRgytR6L2e8b1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3086&quot; height=&quot;2183&quot; data-filename=&quot;1. Coding Notebook Sheets-7.jpg&quot; data-origin-width=&quot;3086&quot; data-origin-height=&quot;2183&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;처음엔 이렇게 짜서 했었는데 너무 복잡하게 생각한거였음&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;굳이 이렇게 복잡하게 생각해서 할 필요가 없었다.&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-filename=&quot;1. Coding Notebook Sheets-8.jpg&quot; data-origin-width=&quot;3086&quot; data-origin-height=&quot;2183&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d17GrD/btsGMJRa5Kc/zYljJdSPoOW4RkRqDyGW10/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d17GrD/btsGMJRa5Kc/zYljJdSPoOW4RkRqDyGW10/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d17GrD/btsGMJRa5Kc/zYljJdSPoOW4RkRqDyGW10/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd17GrD%2FbtsGMJRa5Kc%2FzYljJdSPoOW4RkRqDyGW10%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3086&quot; height=&quot;2183&quot; data-filename=&quot;1. Coding Notebook Sheets-8.jpg&quot; data-origin-width=&quot;3086&quot; data-origin-height=&quot;2183&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;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어렵...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어렵다...&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;751&quot; data-origin-height=&quot;707&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EaHMN/btsGPpDtES9/8hS4bb4xuuveJ5hAVsxiX1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EaHMN/btsGPpDtES9/8hS4bb4xuuveJ5hAVsxiX1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EaHMN/btsGPpDtES9/8hS4bb4xuuveJ5hAVsxiX1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEaHMN%2FbtsGPpDtES9%2F8hS4bb4xuuveJ5hAVsxiX1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;188&quot; height=&quot;177&quot; data-origin-width=&quot;751&quot; data-origin-height=&quot;707&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하..하지만 능히 해낼것임..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 day 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;하다보면 또 괜찮아질거야 웅.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아 미로 코드는 중간에 디버깅 해야하는 부분이 있는데 그건 day15까지 한 뒤에 다시해보라고 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;15까지 열심히 들으면 한번 해봐야겠다&lt;/p&gt;</description>
      <category>공부/Python</category>
      <author>JINIers</author>
      <guid isPermaLink="true">https://jiniers.tistory.com/150</guid>
      <comments>https://jiniers.tistory.com/150#entry150comment</comments>
      <pubDate>Sat, 20 Apr 2024 22:03:20 +0900</pubDate>
    </item>
    <item>
      <title>cloudformaiton 이용 네트워크 구성하기(autoscaling 생성)</title>
      <link>https://jiniers.tistory.com/149</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;네트워크 구성순서&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://jiniers.tistory.com/147&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;vpc 생성&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://jiniers.tistory.com/148&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;lb 생성&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;autoscaling&amp;nbsp;생성&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;autoscaling을 하려면 그전에 launch template을 만들어야하는데 그걸 만들지않으면 autoscaling서비스가 만들어지지않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지짜.. 이걸.. 일주일 넘게... 끙끙거리다가 완성함 큐ㅠㅠㅠ&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;693&quot; data-origin-height=&quot;537&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3YoYK/btsGcPQx7eU/ldFIzgbsLozunjiPumwJLk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3YoYK/btsGcPQx7eU/ldFIzgbsLozunjiPumwJLk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3YoYK/btsGcPQx7eU/ldFIzgbsLozunjiPumwJLk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3YoYK%2FbtsGcPQx7eU%2FldFIzgbsLozunjiPumwJLk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;693&quot; height=&quot;537&quot; data-origin-width=&quot;693&quot; data-origin-height=&quot;537&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래도.. 성공했서...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 됐찌.. 웅..&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;autoscaling&lt;/p&gt;
&lt;pre id=&quot;code_1711673411962&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;AWSTemplateFormatVersion: &quot;2010-09-09&quot;
Description: &quot;before autoscaling launch template setting and autoscaling system&quot;

Parameters:
  NetworkStackName:
    Description: &quot;Name of an active CloudFormation stack that contains the networking resources, such as the VPC and subnet that will be used in this stack.&quot;
    Type: String
    MinLength: 1
    MaxLength: 128
    AllowedPattern: '^[a-zA-Z][-a-zA-Z0-9]*$'
    Default: vpc
  LBStackName:
    Description: &quot;Loadbalance and targetgroup.&quot;
    Type: String
    MinLength: 1
    MaxLength: 128
    AllowedPattern: '^[a-zA-Z][-a-zA-Z0-9]*$'
    Default: lb
  KeyName:
    Description: EC2 KeyPair connect instance
    Type: AWS::EC2::KeyPair::KeyName
    Default: 'test'
  AMI:
    Type: AWS::SSM::Parameter::Value&amp;lt;AWS::EC2::Image::Id&amp;gt;
    Description: 'The ID of the AMI.'
    Default: /aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64

# Autoscaling Type
  Ec2AutoscaleMinSize:
    Description: AutoScalingGroup MinSize
    Type: String
    Default: '1'
  Ec2AutoscaleMaxSize:
    Description: AutoScalingGroup MaxSize
    Type: String
    Default: '5'
  Ec2AutoscaleDesiredCapacity:
    Description: AutoScalingGroup DesiredCapacity
    Type: String
    Default: '1'

Resources:
# Launch Template
  testLaunTem:
    Type: AWS::EC2::LaunchTemplate
    Properties:
      LaunchTemplateName: !Sub '${AWS::StackName}-launch-template'
      LaunchTemplateData:
        ImageId: !Ref AMI
        InstanceType: t2.micro
        KeyName: !Ref KeyName
        SecurityGroupIds: 
          - !ImportValue
            Fn::Sub: &quot;${NetworkStackName}-vpcASG&quot;

# Autoscaling Group
  testAuG:
    Type: AWS::AutoScaling::AutoScalingGroup
    DependsOn: 
        - &quot;testLaunTem&quot;
    Properties:
      VPCZoneIdentifier:
          - !ImportValue
            Fn::Sub: ${NetworkStackName}-PublicSubnetA
          - !ImportValue
            Fn::Sub: ${NetworkStackName}-PublicSubnetB
      Cooldown: 300
      HealthCheckGracePeriod: 300
      HealthCheckType: EC2
      LaunchTemplate: 
        LaunchTemplateId: !Ref testLaunTem
        Version: !GetAtt 'testLaunTem.LatestVersionNumber'
      TargetGroupARNs: 
          - Fn::ImportValue: !Sub ${LBStackName}-testTargetGroup
      MinSize: !Ref 'Ec2AutoscaleMinSize'
      MaxSize: !Ref 'Ec2AutoscaleMaxSize'
      DesiredCapacity: !Ref 'Ec2AutoscaleDesiredCapacity'&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;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;aws docs 보고 열심히 작성했는데 돌리는데 자꾸 양식 에러가 나는거임&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 ai의 도움을 받았다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에러 코드 수정해달라고해서 돌렸는데 안되가지고&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;793&quot; data-origin-height=&quot;294&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/u6OKZ/btsGcsaciTN/p6AXeg3t6gT4vDTJucxpqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/u6OKZ/btsGcsaciTN/p6AXeg3t6gT4vDTJucxpqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/u6OKZ/btsGcsaciTN/p6AXeg3t6gT4vDTJucxpqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu6OKZ%2FbtsGcsaciTN%2Fp6AXeg3t6gT4vDTJucxpqk%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;793&quot; height=&quot;294&quot; data-origin-width=&quot;793&quot; data-origin-height=&quot;294&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개찡찡거림ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계속 수정하고 돌리고 수정하고 돌리고 해서 결국 되긴 됐다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그게 저 위에거&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기분 좋아서 챗gpt 칭찬해줌&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;801&quot; data-origin-height=&quot;251&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cTRgFK/btsGaWJYkS2/nBztzUFjK0GmCiFazJHEFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cTRgFK/btsGaWJYkS2/nBztzUFjK0GmCiFazJHEFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cTRgFK/btsGaWJYkS2/nBztzUFjK0GmCiFazJHEFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcTRgFK%2FbtsGaWJYkS2%2FnBztzUFjK0GmCiFazJHEFK%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;801&quot; height=&quot;251&quot; data-origin-width=&quot;801&quot; data-origin-height=&quot;251&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하 그래도 한 3주정도 낑낑거려서 오토스케일링까지 cloudformaiton으로 작성해봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 좀 cloudformation 파일 작성하는거에 감을 잡은 듯&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;신난다. 이제 또 뭘 해볼까&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/EgQWI/btsGaYHO2ly/LxjS9tJQkkt8BK8YPctR01/3.%20create-launchtemplate-autoscaling.yaml?attach=1&amp;amp;knm=tfile.yaml&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;3. create-launchtemplate-autoscaling.yaml&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>AWS/이것저것</category>
      <author>JINIers</author>
      <guid isPermaLink="true">https://jiniers.tistory.com/149</guid>
      <comments>https://jiniers.tistory.com/149#entry149comment</comments>
      <pubDate>Fri, 29 Mar 2024 09:58:47 +0900</pubDate>
    </item>
    <item>
      <title>cloudformaiton 이용 네트워크 구성하기(LB 생성)</title>
      <link>https://jiniers.tistory.com/148</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;LB랑 target group을 생성해주고 outputs으로 내보낸다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;네트워크 구성 순서&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;a href=&quot;https://jiniers.tistory.com/147&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;vpc 생성&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;lb 생성&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;a href=&quot;https://jiniers.tistory.com/149&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;autoscaling 생성&lt;/a&gt;&lt;/li&gt;
&lt;/ul&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;이 전 vpc 생성스택에서 리소스를 불러와 타겟하고 타겟 그룹을 생성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;타겟그룹만 outputs으로 리소스 내보내기 설정&lt;/p&gt;
&lt;pre id=&quot;code_1711672877322&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# create LB.yaml

AWSTemplateFormatVersion: &quot;2010-09-09&quot;
Description: &quot;Create LB and target group&quot;
Parameters:
  NetworkStackName:
    Description: &quot;Name of an active CloudFormation stack that contains the networking resources, such as the VPC and subnet that will be used in this stack.&quot;
    Type: String
    MinLength: 1
    MaxLength: 128
    AllowedPattern: '^[a-zA-Z][-a-zA-Z0-9]*$'
    Default: vpc
  KeyName:
    Description: EC2 KeyPair connect instance
    Type: AWS::EC2::KeyPair::KeyName
    Default: 'test'
  AMI:
    Type: AWS::SSM::Parameter::Value&amp;lt;AWS::EC2::Image::Id&amp;gt;
    Description: 'The ID of the AMI.'
    Default: /aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64
  
Resources:
# Target group
  testTargetGroup:
    Type: AWS::ElasticLoadBalancingV2::TargetGroup
    Properties:
      HealthCheckIntervalSeconds: 30
      HealthCheckProtocol: HTTP
      HealthCheckTimeoutSeconds: 10
      HealthyThresholdCount: 5
      Matcher: 
        HttpCode: &quot;200&quot;
      Name: testTargetGroup
      Port: 80
      Protocol: HTTPS
      ProtocolVersion: HTTP1
      TargetGroupAttributes: 
        - Key: deregistration_delay.timeout_seconds
          Value: 20
      Targets: 
        - Id: !ImportValue
            Fn::Sub: &quot;${NetworkStackName}-webec2&quot;
      VpcId: !ImportValue
        Fn::Sub: &quot;${NetworkStackName}-vpcA&quot;
      Tags: 
        - Key: Name
          Value: testTargetGroup
        - Key: port
          Value:  80

# ALB
  testALB:
    Type: AWS::ElasticLoadBalancingV2::LoadBalancer
    Properties:
      IpAddressType: ipv4
      Name: testALB
      SecurityGroups:
        - Fn::ImportValue:
            !Sub ${NetworkStackName}-vpcASG
      Subnets:
        - Fn::ImportValue:
            !Sub ${NetworkStackName}-PublicSubnetA
        - Fn::ImportValue:
            !Sub ${NetworkStackName}-PublicSubnetB
      Tags: 
        - Key: Name
          Value: testALB
      Type: application

  testALBListener:
    Type: AWS::ElasticLoadBalancingV2::Listener
    DependsOn:
      - testTargetGroup
      - testALB
    Properties:
      DefaultActions: 
        - Type: forward
          TargetGroupArn:
            Ref: testTargetGroup
      LoadBalancerArn: 
        Ref: testALB
      Port: 80
      Protocol: HTTP

# Outputs
Outputs:
  testTargetGroup:
    Description: target group
    Value: !Ref testTargetGroup
    Export:
      Name: !Sub '${AWS::StackName}-testTargetGroup'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/CvQgz/btsF924ZSz9/WZiw1BVrGOxL7SO7L5tBNK/2.%20create-LB.yaml?attach=1&amp;amp;knm=tfile.yaml&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;2. create-LB.yaml&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>AWS/이것저것</category>
      <author>JINIers</author>
      <guid isPermaLink="true">https://jiniers.tistory.com/148</guid>
      <comments>https://jiniers.tistory.com/148#entry148comment</comments>
      <pubDate>Fri, 29 Mar 2024 09:43:55 +0900</pubDate>
    </item>
    <item>
      <title>cloudformaiton 이용 네트워크 구성하기(vpc 생성)</title>
      <link>https://jiniers.tistory.com/147</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;cloudformation으로 autoscaling 구축하려다가 리소스 값을 자꾸 변경해줘야하는 귀찮음이 발생해서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스택의 리소스를 연관되게 쓸 수 있는 방법이 없을까 하고 서치하던 중에 베스핀 테크 블로그에서 같은 내용의 게시물을 발견했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;굉장히 자세히 나와있어서 참고해서 기존 파일을 왕창 수정했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네트워크 구성 순서는&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;vpc 생성&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://jiniers.tistory.com/148&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;lb 생성&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://jiniers.tistory.com/149&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;autoscaling 생성&lt;/a&gt;&lt;/li&gt;
&lt;/ul&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;675&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cH6Y6L/btsGaB0h5fZ/GT0MSviD5xMRyZ7QD8m5ek/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cH6Y6L/btsGaB0h5fZ/GT0MSviD5xMRyZ7QD8m5ek/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cH6Y6L/btsGaB0h5fZ/GT0MSviD5xMRyZ7QD8m5ek/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcH6Y6L%2FbtsGaB0h5fZ%2FGT0MSviD5xMRyZ7QD8m5ek%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1200&quot; height=&quot;675&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;675&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;참고링크 :&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a style=&quot;color: #0070d1; text-align: start;&quot; href=&quot;https://blog.bespinglobal.com/post/aws-cloudformation%ec%9c%bc%eb%a1%9c-%ec%9d%b8%ed%94%84%eb%9d%bc-%ea%b5%ac%ec%b6%95%ed%95%98%ea%b8%b01-network-%ea%b5%ac%ec%84%b1%ed%95%98%ea%b8%b0/&quot;&gt;AWS Cloudformation으로 인프라 구축하기#1 &amp;ndash; Network 구성하기(베스핀글로벌테크블로그)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1711671998665&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;AWS Cloudformation으로 인프라 구축하기#1 &amp;ndash; Network 구성하기 - BESPIN Tech Blog&quot; data-og-description=&quot;이번 글에서는 AWS에서 제공하는 IaC 도구 서비스인 Cloudformation을 이용하여 인프라를 구축하는 내용입니다. What is Cloudformation? AWS 및 서드 파티 리소스를 손쉽게 모델링, 프로비저닝 및 관리할 수 &quot; data-og-host=&quot;blog.bespinglobal.com&quot; data-og-source-url=&quot;https://blog.bespinglobal.com/post/aws-cloudformation%ec%9c%bc%eb%a1%9c-%ec%9d%b8%ed%94%84%eb%9d%bc-%ea%b5%ac%ec%b6%95%ed%95%98%ea%b8%b01-network-%ea%b5%ac%ec%84%b1%ed%95%98%ea%b8%b0/&quot; data-og-url=&quot;https://blog.bespinglobal.com/post/aws-cloudformation으로-인프라-구축하기1-network-구성하기/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ECt7h/hyVGDAFFlY/NXmkcb0b4kXHCMrvKcGXa0/img.png?width=528&amp;amp;height=236&amp;amp;face=0_0_528_236,https://scrap.kakaocdn.net/dn/briMLG/hyVGK7CQx5/3wHgbDCkbyjgZ0UVKtb3xK/img.png?width=940&amp;amp;height=664&amp;amp;face=0_0_940_664,https://scrap.kakaocdn.net/dn/CIYqZ/hyVGQNxw8v/milJYa1jEl7fNxrqXOsaUk/img.png?width=940&amp;amp;height=528&amp;amp;face=0_0_940_528&quot;&gt;&lt;a href=&quot;https://blog.bespinglobal.com/post/aws-cloudformation%ec%9c%bc%eb%a1%9c-%ec%9d%b8%ed%94%84%eb%9d%bc-%ea%b5%ac%ec%b6%95%ed%95%98%ea%b8%b01-network-%ea%b5%ac%ec%84%b1%ed%95%98%ea%b8%b0/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://blog.bespinglobal.com/post/aws-cloudformation%ec%9c%bc%eb%a1%9c-%ec%9d%b8%ed%94%84%eb%9d%bc-%ea%b5%ac%ec%b6%95%ed%95%98%ea%b8%b01-network-%ea%b5%ac%ec%84%b1%ed%95%98%ea%b8%b0/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ECt7h/hyVGDAFFlY/NXmkcb0b4kXHCMrvKcGXa0/img.png?width=528&amp;amp;height=236&amp;amp;face=0_0_528_236,https://scrap.kakaocdn.net/dn/briMLG/hyVGK7CQx5/3wHgbDCkbyjgZ0UVKtb3xK/img.png?width=940&amp;amp;height=664&amp;amp;face=0_0_940_664,https://scrap.kakaocdn.net/dn/CIYqZ/hyVGQNxw8v/milJYa1jEl7fNxrqXOsaUk/img.png?width=940&amp;amp;height=528&amp;amp;face=0_0_940_528');&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;AWS Cloudformation으로 인프라 구축하기#1 &amp;ndash; Network 구성하기 - BESPIN Tech Blog&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 글에서는 AWS에서 제공하는 IaC 도구 서비스인 Cloudformation을 이용하여 인프라를 구축하는 내용입니다. What is Cloudformation? AWS 및 서드 파티 리소스를 손쉽게 모델링, 프로비저닝 및 관리할 수&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;blog.bespinglobal.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;이전버전&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://jiniers.tistory.com/138&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://jiniers.tistory.com/138&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1711671773630&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;create vpc.yaml&quot; data-og-description=&quot;# create vpc vpc, igw, routing table, security group, 1 ec2(install nginx) # create vpc.yaml AWSTemplateFormatVersion: &amp;quot;2010-09-09&amp;quot; Description: &amp;quot;Create 1 VPC, 4 subnet(public, private), 1 igw, 1 routingtable, 1 Security group, 1 ec2 &amp;quot; Parameters: AMI: Typ&quot; data-og-host=&quot;jiniers.tistory.com&quot; data-og-source-url=&quot;https://jiniers.tistory.com/138&quot; data-og-url=&quot;https://jiniers.tistory.com/138&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bgiVKc/hyVGPuksjY/kRfK4Z7QYJAIMyfXkxks41/img.png?width=800&amp;amp;height=188&amp;amp;face=0_0_800_188,https://scrap.kakaocdn.net/dn/bkGIyr/hyVGH38EKt/aZKurtI3PKb1OoqzKRJAM0/img.png?width=800&amp;amp;height=188&amp;amp;face=0_0_800_188,https://scrap.kakaocdn.net/dn/bIMspo/hyVGPuksie/wBOudqAGa53BIiXI0HlHmk/img.jpg?width=1067&amp;amp;height=1092&amp;amp;face=0_0_1067_1092&quot;&gt;&lt;a href=&quot;https://jiniers.tistory.com/138&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://jiniers.tistory.com/138&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bgiVKc/hyVGPuksjY/kRfK4Z7QYJAIMyfXkxks41/img.png?width=800&amp;amp;height=188&amp;amp;face=0_0_800_188,https://scrap.kakaocdn.net/dn/bkGIyr/hyVGH38EKt/aZKurtI3PKb1OoqzKRJAM0/img.png?width=800&amp;amp;height=188&amp;amp;face=0_0_800_188,https://scrap.kakaocdn.net/dn/bIMspo/hyVGPuksie/wBOudqAGa53BIiXI0HlHmk/img.jpg?width=1067&amp;amp;height=1092&amp;amp;face=0_0_1067_1092');&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;create vpc.yaml&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;# create vpc vpc, igw, routing table, security group, 1 ec2(install nginx) # create vpc.yaml AWSTemplateFormatVersion: &quot;2010-09-09&quot; Description: &quot;Create 1 VPC, 4 subnet(public, private), 1 igw, 1 routingtable, 1 Security group, 1 ec2 &quot; Parameters: AMI: Typ&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;jiniers.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;&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;추가 및 수정부분 : outputs&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;Outputs :&amp;nbsp;&amp;nbsp;다른 스택으로 가져오거나(교차 스택 참조를 생성하기 위해), 응답으로 반환하거나(스택 호출을 설명하기 위해), 또는 AWS CloudFormation 콘솔에서 볼 수 있는 출력 값을 선언&lt;/p&gt;
&lt;pre id=&quot;code_1711672188829&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# create vpc.yaml

AWSTemplateFormatVersion: &quot;2010-09-09&quot;
Description: &quot;Create 1 VPC, 4 subnet(public, private), 1 igw, 1 routingtable, 1 Security group, 1 ec2 &quot;

Parameters:
  AMI:
    Type: AWS::SSM::Parameter::Value&amp;lt;AWS::EC2::Image::Id&amp;gt;
    Description: 'The ID of the AMI.'
    Default: /aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64

Resources:
# Create VPC
  vpcA:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.1.0.0/16
      EnableDnsSupport: 'true'
      EnableDnsHostnames: 'true'
      InstanceTenancy: default
      Tags:
        - Key: Name
          Value: &quot;vpcA&quot;

# Create Subnet
  PublicSubnetA:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId:
        Ref: vpcA
      CidrBlock: 10.1.10.0/24
      AvailabilityZone: &quot;ap-northeast-2a&quot;
      MapPublicIpOnLaunch: &quot;true&quot;
      Tags:
      - Key: Name
        Value: &quot;Public Subnet AZ1&quot;
  PrivateSubnetA:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId:
        Ref: vpcA
      CidrBlock: 10.1.15.0/24
      AvailabilityZone: &quot;ap-northeast-2a&quot;
      Tags:
      - Key: Name
        Value: &quot;Private Subnet AZ1&quot;
  PublicSubnetB:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId:
        Ref: vpcA
      CidrBlock: 10.1.40.0/24
      AvailabilityZone: &quot;ap-northeast-2b&quot;
      MapPublicIpOnLaunch: &quot;true&quot;
      Tags:
      - Key: Name
        Value: &quot;Public Subnet AZ2&quot;
  PrivateSubnetB:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId:
        Ref: vpcA
      CidrBlock: 10.1.45.0/24
      AvailabilityZone: &quot;ap-northeast-2b&quot;
      Tags:
      - Key: Name
        Value: &quot;Private Subnet AZ2&quot;

# Create Public Route Table
  PublicRouteTable:
    Type: AWS::EC2::RouteTable
    Properties:
      VpcId:
        Ref: vpcA
      Tags:
        - Key: Name
          Value: &quot;PublicRouteTable&quot;
  PublicSubnetARouteTableAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    DependsOn: 
      - &quot;PublicRouteTable&quot;
      - &quot;PublicSubnetA&quot;
    Properties:
      RouteTableId: 
        Ref: PublicRouteTable
      SubnetId:
        Ref: PublicSubnetA
  PublicSubnetCRouteTableAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    DependsOn: 
      - &quot;PublicRouteTable&quot;
      - &quot;PublicSubnetB&quot;
    Properties:
      RouteTableId: 
        Ref: PublicRouteTable
      SubnetId: 
        Ref: PublicSubnetB

# Create Internet GateWay
  igw:
    Type: AWS::EC2::InternetGateway
    Properties:
      Tags:
        - Key: Name
          Value: &quot;igw&quot;
  vpcAInternetGatewayAttachment:
    Type: AWS::EC2::VPCGatewayAttachment
    DependsOn:
      - vpcA
      - igw
    Properties:
      VpcId: !Ref vpcA
      InternetGatewayId: !Ref igw
  vpcAInternetRoute:
    Type: AWS::EC2::Route
    DependsOn: igw
    Properties:
       RouteTableId:
         Ref: PublicRouteTable
       DestinationCidrBlock: 0.0.0.0/0
       GatewayId:
         Ref: igw

# Create Security Group
  vpcASG:
    Type: AWS::EC2::SecurityGroup
    DependsOn: vpcA
    Properties:
      GroupDescription: Web APP Security Group
      GroupName: &quot;Web-SG&quot;
      VpcId: !Ref vpcA
      SecurityGroupIngress:
      - IpProtocol: tcp
        FromPort: 80
        ToPort: 80
        CidrIp: 0.0.0.0/0
      - IpProtocol: icmp
        FromPort: -1
        ToPort: -1
        CidrIp: 0.0.0.0/0
      - IpProtocol: tcp
        FromPort: 22
        ToPort: 22
        CidrIp: 0.0.0.0/0
      - IpProtocol: -1
        CidrIp: 0.0.0.0/0
      Tags:
        - Key: Name
          Value: &quot;web-sg&quot;

# instance
  webec2:
    Type: AWS::EC2::Instance
    DependsOn: 
      - PublicSubnetA
      - vpcASG
    Properties:
      ImageId: !Ref AMI
      KeyName: &quot;test&quot;
      InstanceType: t2.micro
      NetworkInterfaces:
      - AssociatePublicIpAddress: true
        SubnetId: !Ref PublicSubnetA
        DeviceIndex: &quot;0&quot;
        GroupSet:
            - !Ref vpcASG
      Tags:
        - Key: Name
          Value: &quot;web-ec2&quot;
      UserData: 
        Fn::Base64: !Sub |
          #!/bin/bash -xe
          sudo su
          yum install nginx -y
          systemctl enable nginx
          systemctl start nginx

# Outputs :  다른 스택으로 가져오거나(교차 스택 참조를 생성하기 위해), 응답으로 반환하거나(스택 호출을 설명하기 위해), 또는 AWS CloudFormation 콘솔에서 볼 수 있는 출력 값을 선언
Outputs:
  vpcA:
    Description: create vpc
    Value: !Ref vpcA
    Export:
      Name: !Sub '${AWS::StackName}-vpcA'
  PublicSubnetA:
      Description: public subnet AZ1
      Value: !Ref PublicSubnetA
      Export:
        Name: !Sub '${AWS::StackName}-PublicSubnetA'
  PublicSubnetB:
      Description: public subnet AZ2
      Value: !Ref PublicSubnetB
      Export:
        Name: !Sub '${AWS::StackName}-PublicSubnetB'
  PrivateSubnetA:
      Description: private subnet AZ1
      Value: !Ref PrivateSubnetA
      Export:
        Name: !Sub '${AWS::StackName}-PrivateSubnetA'
  PrivateSubnetB:
      Description: private subnet AZ2
      Value: !Ref PrivateSubnetB
      Export:
        Name: !Sub '${AWS::StackName}-PrivateSubnetB'
  vpcASG:
      Description: vpc A Security Group
      Value: !Ref vpcASG
      Export:
        Name: !Sub '${AWS::StackName}-vpcASG'
  webec2:
      Description: vpc A test instance
      Value: !Ref webec2
      Export:
        Name: !Sub '${AWS::StackName}-webec2'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/v4oSD/btsF9KpRG0W/3G0TqfZhLUY3hCMBk9CcW0/1.%20create-vpc.yaml?attach=1&amp;amp;knm=tfile.yaml&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;1. create-vpc.yaml&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.01MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>AWS/이것저것</category>
      <author>JINIers</author>
      <guid isPermaLink="true">https://jiniers.tistory.com/147</guid>
      <comments>https://jiniers.tistory.com/147#entry147comment</comments>
      <pubDate>Fri, 29 Mar 2024 09:37:13 +0900</pubDate>
    </item>
    <item>
      <title>[Python 100 day challenge ] Day 5 - for</title>
      <link>https://jiniers.tistory.com/146</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Day5에서 만들거 : 비밀번호 생성 프로그램&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;946&quot; data-origin-height=&quot;481&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3YsEq/btsF7wYAkIO/bDzjSoVHRkofzZpD8Kc7ek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3YsEq/btsF7wYAkIO/bDzjSoVHRkofzZpD8Kc7ek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3YsEq/btsF7wYAkIO/bDzjSoVHRkofzZpD8Kc7ek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3YsEq%2FbtsF7wYAkIO%2FbDzjSoVHRkofzZpD8Kc7ek%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;946&quot; height=&quot;481&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;481&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;이걸 내가 할 수 있을까..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일다.ㄴ..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;day5에선 for 루프와 range() 함수 두가지를 배우고 사용하여 프로그램을 만든다.&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;Loop&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;for : 목록의 항목을 살펴보고 각각 항목으로 작업을 수행할 수 있음.&lt;/p&gt;
&lt;pre id=&quot;code_1711502545030&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for item in list_of_items:
  print(item)&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;pre id=&quot;code_1711502579618&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fruits = [&quot;Apple&quot;, &quot;Peach&quot;, &quot;Pear&quot;]
for fruit in fruits:
    print(fruit)
    print(fruit + &quot; Pie&quot;)
print(fruits)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행결과&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;233&quot; data-origin-height=&quot;143&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dfVZg2/btsF65s92lc/ak5hgc9nzoSzkl6yq0UCZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dfVZg2/btsF65s92lc/ak5hgc9nzoSzkl6yq0UCZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dfVZg2/btsF65s92lc/ak5hgc9nzoSzkl6yq0UCZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdfVZg2%2FbtsF65s92lc%2Fak5hgc9nzoSzkl6yq0UCZK%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;233&quot; height=&quot;143&quot; data-origin-width=&quot;233&quot; data-origin-height=&quot;143&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막 줄이 ['Apple', 'Peach', 'Pear'] 로 프린트된건&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;for 문을 나와서 적힌 print(fruits) 때문에 list 전부 출력된 것&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;average height&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 키 목록에서 학생의 평균 키를 계산하는 프로그램 작성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- sum(), len() 함수를 사용하면 안됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- for 루프만 이용해서 작성&lt;/p&gt;
&lt;pre id=&quot;code_1711503737642&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;student_heights = input(&quot;학생의 키를 입력하세요. &quot;).split() #student_heights = [151, 145, 179] 
for n in range(0, len(student_heights)):
  student_heights[n] = int(student_heights[n])


# sum height
total_height = 0
for height in student_heights:
    total_height = total_height + height  # total_height += height
    # print(total_height)
print(&quot;total height = &quot;, total_height)



# number count
number = 0
for student in student_heights:
    number = number + 1
    #print(number)
print(&quot;number of students = &quot;, number)

# average height
average_height = round(total_height / number)
print(&quot;average height = &quot;, average_height)&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;size16&quot;&gt;실행결과&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;403&quot; data-origin-height=&quot;80&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FVJ9j/btsF40zBQPX/TTwIgEP1Giaw2wGECK5TK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FVJ9j/btsF40zBQPX/TTwIgEP1Giaw2wGECK5TK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FVJ9j/btsF40zBQPX/TTwIgEP1Giaw2wGECK5TK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFVJ9j%2FbtsF40zBQPX%2FTTwIgEP1Giaw2wGECK5TK1%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;458&quot; height=&quot;91&quot; data-origin-width=&quot;403&quot; data-origin-height=&quot;80&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;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;High Score&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;점수 목록에서 가장 높은 점수를 출력하는 프로그램 작성&lt;/p&gt;
&lt;pre id=&quot;code_1711504687371&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;student_scores = input(&quot;점수를 입력하세요. &quot;).split()
for n in range(0, len(student_scores)):
  student_scores[n] = int(student_scores[n])
  
high_score = 0
for score in student_scores:
    if high_score &amp;lt;= score:
        high_score = score
        #print(high_score)
    elif high_score &amp;gt; score:
        high_score = high_score
        #print(high_score)
print(f&quot;The highest score in the class is: {high_score}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행결과&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;281&quot; data-origin-height=&quot;38&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6aoMw/btsF5Vdx4cc/XSGjC3JoMwzVMcZz5PCGY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6aoMw/btsF5Vdx4cc/XSGjC3JoMwzVMcZz5PCGY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6aoMw/btsF5Vdx4cc/XSGjC3JoMwzVMcZz5PCGY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6aoMw%2FbtsF5Vdx4cc%2FXSGjC3JoMwzVMcZz5PCGY0%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;392&quot; height=&quot;53&quot; data-origin-width=&quot;281&quot; data-origin-height=&quot;38&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;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;짝수 더하기&lt;/p&gt;
&lt;pre id=&quot;code_1711505445539&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;target = 52

a = 0
for nu in range(2, target+1, 2):		# target+1인 이유 : 안그러면 51까지만 더해지고 52는 안더해짐
    a += nu
print (a)&lt;/code&gt;&lt;/pre&gt;</description>
      <category>공부/Python</category>
      <author>JINIers</author>
      <guid isPermaLink="true">https://jiniers.tistory.com/146</guid>
      <comments>https://jiniers.tistory.com/146#entry146comment</comments>
      <pubDate>Wed, 27 Mar 2024 11:11:43 +0900</pubDate>
    </item>
  </channel>
</rss>