<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>세상 끝 조그만 서가</title>
    <link>https://sesang06.tistory.com/</link>
    <description>초보 iOS 개발자 세상이 채워 가는 월드 와이드 웹 항해 일지
/ https://github.com/sesang06 
/ sesang06@naver.com</description>
    <language>ko</language>
    <pubDate>Sun, 23 Aug 2026 09:28:06 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor> aa</managingEditor>
    <image>
      <title>세상 끝 조그만 서가</title>
      <url>https://tistory1.daumcdn.net/tistory/1924050/attach/79acbcb2a51f4114b711f1412859274b</url>
      <link>https://sesang06.tistory.com</link>
    </image>
    <item>
      <title>AI 버튜버 프로그램 무료배포 &amp;amp; 다운로드</title>
      <link>https://sesang06.tistory.com/217</link>
      <description>&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;저는 최근에 AI 버튜버 프로그램을 배포한 적이 있습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/iO4wJWOZ4TE&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/iO4wJWOZ4TE&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=iO4wJWOZ4TE&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/75XBn/dJMb9kUdfHr/cdcnPcddwPNq1JsZfXwb7k/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/lGo8x/dJMb9b32lcX/LNV2E4smqlIcfnZcSatM01/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/tRQn7/dJMb82MNzI9/cfWhregrUdlwxKROD45qkK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;1년 동안 만든 AI 버튜버를 치지직에 데뷔시키기&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/iO4wJWOZ4TE&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&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;a href=&quot;https://www.youtube.com/watch?v=Te1vRE6QY0w&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.youtube.com/watch?v=Te1vRE6QY0w&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=Te1vRE6QY0w&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/qtKi1/dJMb8YXV9Ep/V72kcCav741eKIbokPGkAK/img.jpg?width=480&amp;amp;height=360&amp;amp;face=0_0_480_360,https://scrap.kakaocdn.net/dn/cK7EWc/dJMb8VNF753/wX9oS1OWpeb4EiGth59g01/img.jpg?width=480&amp;amp;height=360&amp;amp;face=0_0_480_360&quot; data-video-width=&quot;480&quot; data-video-height=&quot;360&quot; data-video-origin-width=&quot;480&quot; data-video-origin-height=&quot;360&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;게임 훈수두는 AI 버튜버 미소녀 만드는 법&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/Te1vRE6QY0w&quot; width=&quot;480&quot; height=&quot;360&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #595959;&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;시로AI는 &lt;/span&gt;&lt;span style=&quot;color: #595959;&quot;&gt;실시간으로 &lt;/span&gt;&lt;span style=&quot;color: #595959;&quot;&gt;유튜브, 치지직, 투네이션의 후원과 댓글, 그리고 스트리머의 목소리, 이미지를 인식하여 반응하는 AI 컴퍼니언입니다.&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #595959;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #595959;&quot;&gt;유저가 자신의 &lt;/span&gt;&lt;span style=&quot;color: #595959;&quot;&gt;Live2D 모델, 목소리, 성격 설정&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #595959;&quot;&gt;을 함으로써 &lt;/span&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #595959;&quot;&gt;자신만의 AI 컴퍼니언&lt;/span&gt;&lt;span style=&quot;color: #595959;&quot;&gt;을 방송에 활용할 수 있도록 지원합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #595959;&quot;&gt;&lt;span style=&quot;color: #595959;&quot;&gt;제미나이, 클로드, chatgpt, ollama, grok을 베이스 LLM으로 지원합니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&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: #595959;&quot;&gt;설치 메뉴얼과 프로그램을 배포하니&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #595959;&quot;&gt;&lt;a href=&quot;https://wikidocs.net/372516&quot;&gt;https://wikidocs.net/372516&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로 들어가 주세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감사합니다~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author> aa</author>
      <guid isPermaLink="true">https://sesang06.tistory.com/217</guid>
      <comments>https://sesang06.tistory.com/217#entry217comment</comments>
      <pubDate>Sat, 27 Jun 2026 21:57:38 +0900</pubDate>
    </item>
    <item>
      <title>ChatGPT로 AI 캐릭터 만드는 법</title>
      <link>https://sesang06.tistory.com/216</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;영상을 유투브에 투고한 적이 있습니다.&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://www.youtube.com/watch?v=oB8C4FcZDD0&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.youtube.com/watch?v=oB8C4FcZDD0&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=oB8C4FcZDD0&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/TI9uf/hyWdkGA4nT/j9wbfwCQnqY67ga226pOj0/img.jpg?width=640&amp;amp;height=480&amp;amp;face=0_0_640_480&quot; data-video-width=&quot;640&quot; data-video-height=&quot;480&quot; data-video-origin-width=&quot;640&quot; data-video-origin-height=&quot;480&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;AI 프리렌 - ChatGPT로 캐릭터 인격 만들기&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/oB8C4FcZDD0&quot; width=&quot;640&quot; height=&quot;480&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&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;br /&gt;----&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;업데이트&amp;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;p data-ke-size=&quot;size16&quot;&gt;다른 비슷한 영상도 사랑해주세용 아듀!!!&lt;br /&gt;&lt;br /&gt;두 인공지능 대화시키는 내용&lt;br /&gt;- 이 프로젝트가 쓴 TTS보다 음성품질이 높고 생성시간이 길며 학습이 쉽고, 설정이 쉽습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;a href=&quot;https://youtu.be/0eWRZG3_z0w&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/0eWRZG3_z0w&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=0eWRZG3_z0w&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/hZg6g/hyXDhIWY8k/9UBIQDNv7M1a1Cuweql4k0/img.jpg?width=480&amp;amp;height=360&amp;amp;face=71_56_136_121,https://scrap.kakaocdn.net/dn/NvFsx/hyXzNWKGTt/uD5IbEZU0McnUGkj4JVwAK/img.jpg?width=480&amp;amp;height=360&amp;amp;face=71_56_136_121&quot; data-video-width=&quot;480&quot; data-video-height=&quot;360&quot; data-video-origin-width=&quot;480&quot; data-video-origin-height=&quot;360&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;AI 스파이 패밀리 - ChatGPT로 만든 두 캐릭터 대화시키기&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/0eWRZG3_z0w&quot; width=&quot;480&quot; height=&quot;360&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;VR공간에서 챗봇을 만드는 내용&lt;br /&gt;- 이 프로젝트보다 TTS 설정이 쉽고 음성품질이 낮으며 생성시간이 짧습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/w982zt5s9Jg&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/w982zt5s9Jg&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=w982zt5s9Jg&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/cj9M9g/hyXDlkhmNs/GWBLvrRak6R4hKifDCtQ4K/img.jpg?width=480&amp;amp;height=360&amp;amp;face=0_0_480_360,https://scrap.kakaocdn.net/dn/dIh4u5/hyXDbPuAmJ/u2rFlO4AAhNc2NdyzStbj1/img.jpg?width=480&amp;amp;height=360&amp;amp;face=0_0_480_360&quot; data-video-width=&quot;480&quot; data-video-height=&quot;360&quot; data-video-origin-width=&quot;480&quot; data-video-origin-height=&quot;360&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;증강현실로 AI 여자친구 만들기 (ChatGPT, AR, Unity)&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/w982zt5s9Jg&quot; width=&quot;480&quot; height=&quot;360&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이쪽도 구경하면 좋아요+댓글달아주기!!!&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;br /&gt;---------&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&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;&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;b&gt;우분투와 인텔 고성능 GPU&lt;/b&gt;가 필요한 부분이 있으니&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다 해보지 마시고 걸러서 하시길 바랍니다!!&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;그럼 레츠기릿!!!&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;위스퍼&amp;nbsp;모델로&amp;nbsp;음성&amp;nbsp;파일을&amp;nbsp;바로&amp;nbsp;문자로&amp;nbsp;변환&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/openai/whisper&quot;&gt;https://github.com/openai/whisper&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이선 3.8-3.11 버전에서 위스퍼 모델을 설치합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1716641053895&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pip install -U openai-whisper&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;추가적으로 ffmpeg라는 프로그램도 필요합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;환경에 따라서 설치해줍시다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1716641082493&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# on Ubuntu or Debian
sudo apt update &amp;amp;&amp;amp; sudo apt install ffmpeg

# on Arch Linux
sudo pacman -S ffmpeg

# on MacOS using Homebrew (https://brew.sh/)
brew install ffmpeg

# on Windows using Chocolatey (https://chocolatey.org/)
choco install ffmpeg

# on Windows using Scoop (https://scoop.sh/)
scoop install ffmpeg&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;마이크의 음성을 wav로 저장하고 다시 문자로 받기 위해서 pyaudio도 설치합니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1716641098842&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pip install pyaudio wave&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;마이크에서 말한 일본어를 텍스트로 바꿔주는 코드입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1716641159543&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import pyaudio
import wave
import whisper

model = whisper.load_model(&quot;medium&quot;)

def transcribe_directly():
    sample_rate = 16000
    bits_per_sample = 16
    chunk_size = 1024
    audio_format = pyaudio.paInt16
    channels = 1

    def callback(in_data, frame_count, time_info, status):
        wav_file.writeframes(in_data)
        return None, pyaudio.paContinue

    # Open the wave file for writing
    wav_file = wave.open('./output.wav', 'wb')
    wav_file.setnchannels(channels)
    wav_file.setsampwidth(bits_per_sample // 8)
    wav_file.setframerate(sample_rate)

    # Initialize PyAudio
    audio = pyaudio.PyAudio()

    # Start recording audio
    stream = audio.open(format=audio_format,
                        channels=channels,
                        rate=sample_rate,
                        input=True,
                        frames_per_buffer=chunk_size,
                        stream_callback=callback)

    input(&quot;Press Enter to stop recording...&quot;)
    # Stop and close the audio stream
    stream.stop_stream()
    stream.close()
    audio.terminate()

    # Close the wave file
    wav_file.close()
    result = model.transcribe(&quot;./output.wav&quot;, language=&quot;ja&quot;)
    return result['text']

text = transcribe_directly()
print(text)&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;한국어를 인식하려면 result = model.transcribe(&quot;./output.wav&quot;, language=&quot;ko&quot;)를,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;영어를 인식하려면 result = model.transcribe(&quot;./output.wav&quot;, language=&quot;en&quot;) 을 써주세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;챗GPT를&amp;nbsp;이용한&amp;nbsp;인공지능&amp;nbsp;캐릭터&amp;nbsp;생성&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;챗지피티를 이용해 캐릭터를 만들어봅시다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;챗지피티 API는 과금형이므로 결제를 해서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;돈을 좀 충전해준다음에 쓰시길 바랍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가지고 놀기엔 5달러면 충분&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어시스턴트 API 를 이용해서 프리렌을 학습해 주겠습니다.&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;a href=&quot;https://platform.openai.com/assistants/&quot;&gt;https://platform.openai.com/assistants/&lt;/a&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어시스턴트를 추가하고 아래와 같이 Instructions을 추가해줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;3022&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XWk1i/btsHCwvQGch/KMeImAaSh4cEwrHqKixvd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XWk1i/btsHCwvQGch/KMeImAaSh4cEwrHqKixvd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XWk1i/btsHCwvQGch/KMeImAaSh4cEwrHqKixvd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXWk1i%2FbtsHCwvQGch%2FKMeImAaSh4cEwrHqKixvd0%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;2000&quot; height=&quot;3022&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;3022&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;pre id=&quot;code_1716641289800&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Your job is to imagine that you are Frieren, whose character link is https://frieren.fandom.com/wiki/Frieren. As Frieren, you need to embody her calm and composed nature while speaking in Japanese. 


Using the detailed character traits and typical behaviors extracted from the character setting document (frieren.pdf), along with analysis of dialogue patterns from output.txt, create responses that emulate Frieren's speech and behavior.  Also refer to 'dialog.txt' file, which is the dialogue between Frieren and other person. 

Her dialog style is like below:
- &quot;まあいいや&quot;
- &quot;今日の買い出し当番私だったのに寝坊しちゃったから&quot;
- &quot;直接の感謝じゃないよ この村の人たちはヒンメルを信じていたんだ&quot;
- &quot;まあいいや&quot;
- &quot;友人から預かった子を七に送るつもりはないよ&quot;
Note that she do not speak in honorific terms. She usually finish her sentence with 'いるよ', 'たんだ', or 'からね'.


Please respond as Frieren would, using her Japanese language skills and knowledge of her character abilities and experiences. Consider my personality, thoughts, and feelings as Frieren, and provide insight and nuance in your responses. Do not quote within your answer. Be concise in your words.&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;인스트럭션은 다음과 같이 구성되어있습니다.&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://frieren.fandom.com/wiki/Frieren&quot;&gt;https://frieren.fandom.com/wiki/Frieren&lt;/a&gt; 을 참고해라&lt;/li&gt;
&lt;li&gt;조용한 성격을 반영해라&lt;/li&gt;
&lt;li&gt;일본어로 말해라&lt;/li&gt;
&lt;li&gt;캐릭터 설정을 표현하는 pdf, 대사록을 담은 txt를 참고해라&lt;/li&gt;
&lt;li&gt;일어로 된 말투를 참고하고, 경어를 쓰지 마라, &amp;lsquo;이루요&amp;rsquo;, &amp;lsquo;단다&amp;rsquo;, &amp;lsquo;카라네&amp;rsquo; 로 말을 끝내라.&lt;/li&gt;
&lt;li&gt;프리렌인 척 말해라&lt;/li&gt;
&lt;li&gt;길게 말하지 마라&lt;/li&gt;
&lt;/ul&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;언어는 서로 달라도 상관없어 보입니다. 위키와 인스트럭션은 영어, 설정은 한국어, 말투는 일어를 섞어 썼는데도 잘 동작했습니다. 굳이 맞출 필요가 없습니다.&lt;/li&gt;
&lt;li&gt;대화집이나 설정을 잘 넣는다고 알아서 완전히 따라해주진 않았습니다. 그래서 &amp;lsquo;경어를 써라&amp;rsquo; 같은 말도 넣었고 예시 일본어 문장들도 추가해주고 성격도 어느정도 요약해서 넣어주었습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;길게 말하지 마라&lt;/b&gt;는 지시어가 중요합니다. 없으면 엄청 길게 주절주절 말합니다.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 지시어를 처음부터 잘 쓰는 건 어렵기에 &lt;br /&gt;저는 &lt;a href=&quot;https://www.feedough.com/ai-prompt-generator/&quot;&gt;https://www.feedough.com/ai-prompt-generator/&lt;/a&gt;에서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lsquo;Act as Frieren whose charcter link is &lt;a href=&quot;https://frieren.fandom.com/wiki/Frieren&quot;&gt;https://frieren.fandom.com/wiki/Frieren&lt;/a&gt;&lt;a href=&quot;https://frieren.fandom.com/wiki/Frieren%E2%80%99&quot;&gt;&amp;rsquo;&lt;/a&gt; 라는 지시문을 주어서 어느정도 초안을 작성하고 진행했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;3135&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mrqM6/btsHB7QTsac/y6U5tfCo7YIZVWdFeliay0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mrqM6/btsHB7QTsac/y6U5tfCo7YIZVWdFeliay0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mrqM6/btsHB7QTsac/y6U5tfCo7YIZVWdFeliay0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmrqM6%2FbtsHB7QTsac%2Fy6U5tfCo7YIZVWdFeliay0%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;2000&quot; height=&quot;3135&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;3135&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;lsquo;한국어로 대답해라&amp;rsquo; 정도로 지시어를 변경해서 가지고 놀수도 있어 보입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 세개의 파일들을 File search에 넣어 보시고 Playground에서 시험삼아 몇개 말을 해 보시길 바랍니다.&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://drive.google.com/file/d/1DWyrR-l4FdbCofZF7FEn4t943_6DJCOm/view?usp=sharing&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://drive.google.com/file/d/1DWyrR-l4FdbCofZF7FEn4t943_6DJCOm/view?usp=sharing&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/LwKDy/btsHCqWUBxH/msSsGsfxoAQA2X4kdGEYZK/output.txt?attach=1&amp;amp;knm=tfile.txt&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;output.txt&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;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/sVuIb/btsHDJVuShx/kVlVwVR49IOl85T3LGOkRk/dialog.txt?attach=1&amp;amp;knm=tfile.txt&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;dialog.txt&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;294&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bikBO3/btsHDGEtQdf/LKrNTwdHcoGHXu383tRAk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bikBO3/btsHDGEtQdf/LKrNTwdHcoGHXu383tRAk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bikBO3/btsHDGEtQdf/LKrNTwdHcoGHXu383tRAk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbikBO3%2FbtsHDGEtQdf%2FLKrNTwdHcoGHXu383tRAk0%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;2000&quot; height=&quot;294&quot; data-origin-width=&quot;2000&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;pdf 파일자체는 나무위키를 긁은 거라 별게 없고, output.txt나 dialog.txt는 일일히 수집하였는데요.&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;rarr; 텍스트 변환 코드를 이용해 일어로 일일히 받아적어서 모았습니다.&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;2000&quot; data-origin-height=&quot;1943&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l8HIU/btsHCa7QyKl/TvwEI9Tgtka0IzY8VAnSq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l8HIU/btsHCa7QyKl/TvwEI9Tgtka0IzY8VAnSq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l8HIU/btsHCa7QyKl/TvwEI9Tgtka0IzY8VAnSq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl8HIU%2FbtsHCa7QyKl%2FTvwEI9Tgtka0IzY8VAnSq1%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;2000&quot; height=&quot;1943&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1943&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;플레이그라운드에서 잘 동작했으면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;683&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cYj4dz/btsHBBStCPD/aJspdgWXvDug0DZk8Lva90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cYj4dz/btsHBBStCPD/aJspdgWXvDug0DZk8Lva90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cYj4dz/btsHBBStCPD/aJspdgWXvDug0DZk8Lva90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcYj4dz%2FbtsHBBStCPD%2FaJspdgWXvDug0DZk8Lva90%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;2000&quot; height=&quot;683&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;683&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어시스턴트의 ID를 받아적어 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대화형 챗봇을 구현한 코드는 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 openai Python 바인딩을 설치해 주시고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1716641489485&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pip install openai&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;공식 Assistant API 예제와 별 차이 없지만 코드 첨부합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1716641520125&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import time

from openai import OpenAI
import re


client = OpenAI(
  api_key=''
)
assistant = client.beta.assistants.retrieve(
    assistant_id=''
)
thread = client.beta.threads.create()

def wait_on_run(run, thread):
    while run.status == &quot;queued&quot; or run.status == &quot;in_progress&quot;:
        run = client.beta.threads.runs.retrieve(
            thread_id=thread.id,
            run_id=run.id,
        )
        time.sleep(0.5)
    return run

while True:
    content = input('Enter your message:')
    message = client.beta.threads.messages.create(
        thread_id=thread.id,
        role='user',
        content=content
    )



    # Execute our run
    run = client.beta.threads.runs.create(
        thread_id=thread.id,
        assistant_id=assistant.id,
    )

    # Wait for completion
    wait_on_run(run, thread)
    # Retrieve all the messages added after our last user message
    messages = client.beta.threads.messages.list(
        thread_id=thread.id, order=&quot;asc&quot;, after=message.id
    )
    response_text = &quot;&quot;
    for message in messages:
        for c in message.content:
            response_text += c.text.value
    clean_text = re.sub('【.*?】', '', response_text)
    print(clean_text)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;XTTS 라이브러리를 이용한 인공지능 TTS 생성&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;주의!!!&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;여기서부터 난이도 급상승합니다. 함부로 따라하지 마세요. 개발기술 테크닉은 과감히 생략하겠습니다.&lt;/b&gt;&lt;/p&gt;
&lt;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/coqui-ai/TTS&quot;&gt;https://github.com/coqui-ai/TTS&lt;/a&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;캐릭터가 말하는 wav 파일을 준비해 주어야 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;241&quot; data-origin-height=&quot;349&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6zc1h/btsHBBZibaZ/NLdW2saGRkKbjDFral72NK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6zc1h/btsHBBZibaZ/NLdW2saGRkKbjDFral72NK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6zc1h/btsHBBZibaZ/NLdW2saGRkKbjDFral72NK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6zc1h%2FbtsHBBZibaZ%2FNLdW2saGRkKbjDFral72NK%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;241&quot; height=&quot;349&quot; data-origin-width=&quot;241&quot; data-origin-height=&quot;349&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;이건 수집해야 되는데 제가 따로 wav 파일을 제공하진 않겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일일히 모험을 통해 알아가도록 합시다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저같은경우 애니메이션 6화까지 대사를 일일히 따서 447개를 수집하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고음질 음원파일을 다운받고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ultimate Vocal Remover를 이용해서 배경음악들을 전부 날려주도록 합시다.&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&gt;&lt;/span&gt;&lt;a href=&quot;https://ultimatevocalremover.com/&quot;&gt;https://ultimatevocalremover.com/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1716641594745&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Ultimate Vocal Remover&quot; data-og-description=&quot;The best vocal remover application on the internet, and it's totally free and open source! Available on Windows, Mac, &amp;amp; Linux&quot; data-og-host=&quot;ultimatevocalremover.com&quot; data-og-source-url=&quot;https://ultimatevocalremover.com/&quot; data-og-url=&quot;https://ultimatevocalremover.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/VNmNY/hyWdl6z5Tj/jBrPOWnGdxMdPunmvro4pk/img.jpg?width=682&amp;amp;height=735&amp;amp;face=0_0_682_735,https://scrap.kakaocdn.net/dn/ezvvF/hyWdezCdql/EkroytMsoARdbn7KRUk1gk/img.jpg?width=682&amp;amp;height=735&amp;amp;face=0_0_682_735&quot;&gt;&lt;a href=&quot;https://ultimatevocalremover.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ultimatevocalremover.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/VNmNY/hyWdl6z5Tj/jBrPOWnGdxMdPunmvro4pk/img.jpg?width=682&amp;amp;height=735&amp;amp;face=0_0_682_735,https://scrap.kakaocdn.net/dn/ezvvF/hyWdezCdql/EkroytMsoARdbn7KRUk1gk/img.jpg?width=682&amp;amp;height=735&amp;amp;face=0_0_682_735');&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;Ultimate Vocal Remover&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The best vocal remover application on the internet, and it's totally free and open source! Available on Windows, Mac, &amp;amp; Linux&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ultimatevocalremover.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;2112&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjosu1/btsHB891hzc/RymKd7FmO3zGo8X7kzknj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjosu1/btsHB891hzc/RymKd7FmO3zGo8X7kzknj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjosu1/btsHB891hzc/RymKd7FmO3zGo8X7kzknj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcjosu1%2FbtsHB891hzc%2FRymKd7FmO3zGo8X7kzknj0%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;2000&quot; height=&quot;2112&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;2112&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MDX Model을 MDX23C-InstVoc HQ를 선택해서 음원을 바꿔준 다음&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;이 수집한 목소리 각각의 대사를 적은 한 파일이 더 필요합니다.&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;pre id=&quot;code_1716641628042&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;output0|どうだった?|どうだった?
output1|逃げとこ。|逃げとこ。
output10|殴ったの?|殴ったの?
output100|元からでしょ|元からでしょ
output101|街中だと見えにくいね|街中だと見えにくいね
output102|じゃあ次|じゃあ次
output103|50年後|50年後
output104|もっと綺麗に見える場所知ってるから案内するよ|もっと綺麗に見える場所知ってるから案内するよ
output105|じゃあ私はここで|じゃあ私はここで
output106|魔法の収集を続けるよ|魔法の収集を続けるよ
output107|100年くらいは中央諸国を巡る予定だから|100年くらいは中央諸国を巡る予定だから
output108|そう&amp;hellip;困ったな&amp;hellip;召喚に使うのに&amp;hellip;|そう&amp;hellip;困ったな&amp;hellip;召喚に使うのに&amp;hellip;
output109|そういえば魔王城で拾ったやつヒンメルに預けたままだっけ|そういえば魔王城で拾ったやつヒンメルに預けたままだっけ
output11|クソババアか|クソババアか
output110|わかんない|わかんない
output111|もうすぐエーラ流星の時期だし|もうすぐエーラ流星の時期だし
output112|ついでに取りに行くか|ついでに取りに行くか
output113|確かここら辺&amp;hellip;|確かここら辺&amp;hellip;&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;이런 코드를 이용해서 대본을 생성해줄 수 있겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1716641643352&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import os
import csv
import whisper

model = whisper.load_model(&quot;large&quot;)
def transcribe_audio_to_csv(directory):
    # Load the whisper model
    # Get a list of all .wav files in the directory
    wav_files = sorted([f for f in os.listdir(directory) if f.endswith('.wav')])
    # Open the CSV file for writing
    with open('output.csv', 'w', newline='', encoding=&quot;utf-8&quot;) as csvfile:
        writer = csv.writer(csvfile, delimiter='|')

        # Process each .wav file
        for wav_file in wav_files:
            # Transcribe the audio file
            result = model.transcribe(os.path.join(directory, wav_file), language=&quot;ja&quot;, fp16=False)
            transcribed_text = result[&quot;text&quot;]

            # Write the filename and transcribed text to the CSV file
            print(f&quot;Transcribed {wav_file}: {transcribed_text}&quot;)
            writer.writerow([wav_file, transcribed_text ,transcribed_text])

# Use the function
transcribe_audio_to_csv('./freiren_dataset')&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;아무튼 수집을 하면 학습을 해야 하는데 XTTS 라이브러리는 python 3.7이상 3.11 미만 버전, 우분투 18~20 에서만 지원한다고 설명하고 있습니다.&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;a href=&quot;http://vast.ai&quot;&gt;vast.ai&lt;/a&gt; 사이트에서 우분투서버를 임대하여 학습에 사용하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;444&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ElIwt/btsHBmBjgyz/MUlCJwCBFekVuHkm9UkgD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ElIwt/btsHBmBjgyz/MUlCJwCBFekVuHkm9UkgD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ElIwt/btsHBmBjgyz/MUlCJwCBFekVuHkm9UkgD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FElIwt%2FbtsHBmBjgyz%2FMUlCJwCBFekVuHkm9UkgD0%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;2000&quot; height=&quot;444&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;444&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Pytorch 2.2.0 cuda 12.1 devel&lt;/li&gt;
&lt;li&gt;50 GB 디스크스페이스&lt;/li&gt;
&lt;li&gt;1x RTX 4090&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로 진행했으며 임대가격은 1시간당 0.4달러입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습이 끝나면 바로 인스턴스를 삭제하시길 바랍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인스턴스를 빌리거나 하면 다음 커맨드로 환경을 설치합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1716641699094&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pip install tts mecab-python3 cutlet unidic-lite&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;pre id=&quot;code_1716641719605&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import os

from trainer import Trainer, TrainerArgs

from TTS.config.shared_configs import BaseDatasetConfig
from TTS.tts.datasets import load_tts_samples
from TTS.tts.layers.xtts.trainer.gpt_trainer import GPTArgs, GPTTrainer, GPTTrainerConfig, XttsAudioConfig
from TTS.utils.manage import ModelManager

# Logging parameters
RUN_NAME = &quot;GPT_XTTS_v2.0_freiren_FT&quot;
PROJECT_NAME = &quot;XTTS_trainer&quot;
DASHBOARD_LOGGER = &quot;tensorboard&quot;
LOGGER_URI = None

# Set here the path that the checkpoints will be saved. Default: ./run/training/
OUT_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), &quot;run&quot;, &quot;training&quot;)
print(OUT_PATH)

# Training Parameters
OPTIMIZER_WD_ONLY_ON_WEIGHTS = True  # for multi-gpu training please make it False
START_WITH_EVAL = True  # if True it will star with evaluation
BATCH_SIZE = 3  # set here the batch size
GRAD_ACUMM_STEPS = 84  # set here the grad accumulation steps
# Note: we recommend that BATCH_SIZE * GRAD_ACUMM_STEPS need to be at least 252 for more efficient training. You can increase/decrease BATCH_SIZE but then set GRAD_ACUMM_STEPS accordingly.

# Define here the dataset that you want to use for the fine-tuning on.
config_dataset = BaseDatasetConfig(
    formatter=&quot;ljspeech&quot;,
    dataset_name=&quot;freiren&quot;,
    path=&quot;/workspace&quot;,
    meta_file_train=&quot;/workspace/metadata.csv&quot;,
    language=&quot;ja&quot;,
)

# Add here the configs of the datasets
DATASETS_CONFIG_LIST = [config_dataset]

# Define the path where XTTS v2.0.1 files will be downloaded
CHECKPOINTS_OUT_PATH = os.path.join(OUT_PATH, &quot;XTTS_v2.0_original_model_files/&quot;)
os.makedirs(CHECKPOINTS_OUT_PATH, exist_ok=True)


# DVAE files
DVAE_CHECKPOINT_LINK = &quot;https://coqui.gateway.scarf.sh/hf-coqui/XTTS-v2/main/dvae.pth&quot;
MEL_NORM_LINK = &quot;https://coqui.gateway.scarf.sh/hf-coqui/XTTS-v2/main/mel_stats.pth&quot;

# Set the path to the downloaded files
DVAE_CHECKPOINT = os.path.join(CHECKPOINTS_OUT_PATH, os.path.basename(DVAE_CHECKPOINT_LINK))
MEL_NORM_FILE = os.path.join(CHECKPOINTS_OUT_PATH, os.path.basename(MEL_NORM_LINK))


# download DVAE files if needed
if not os.path.isfile(DVAE_CHECKPOINT) or not os.path.isfile(MEL_NORM_FILE):
    print(&quot; &amp;gt; Downloading DVAE files!&quot;)
    ModelManager._download_model_files([MEL_NORM_LINK, DVAE_CHECKPOINT_LINK], CHECKPOINTS_OUT_PATH, progress_bar=True)


# Download XTTS v2.0 checkpoint if needed
TOKENIZER_FILE_LINK = &quot;https://coqui.gateway.scarf.sh/hf-coqui/XTTS-v2/main/vocab.json&quot;
XTTS_CHECKPOINT_LINK = &quot;https://coqui.gateway.scarf.sh/hf-coqui/XTTS-v2/main/model.pth&quot;

# XTTS transfer learning parameters: You we need to provide the paths of XTTS model checkpoint that you want to do the fine tuning.
TOKENIZER_FILE = os.path.join(CHECKPOINTS_OUT_PATH, os.path.basename(TOKENIZER_FILE_LINK))  # vocab.json file
XTTS_CHECKPOINT = os.path.join(CHECKPOINTS_OUT_PATH, os.path.basename(XTTS_CHECKPOINT_LINK))  # model.pth file
print(XTTS_CHECKPOINT)

# download XTTS v2.0 files if needed
if not os.path.isfile(TOKENIZER_FILE) or not os.path.isfile(XTTS_CHECKPOINT):
    print(&quot; &amp;gt; Downloading XTTS v2.0 files!&quot;)
    ModelManager._download_model_files(
        [TOKENIZER_FILE_LINK, XTTS_CHECKPOINT_LINK], CHECKPOINTS_OUT_PATH, progress_bar=True
    )


# Training sentences generations
SPEAKER_REFERENCE = [
    &quot;/workspace/wavs/output49.wav&quot;,
    &quot;/workspace/wavs/output50.wav&quot;# speaker reference to be used in training test sentences
]
LANGUAGE = config_dataset.language

def main():
    # init args and config
    model_args = GPTArgs(
        max_conditioning_length=132300,  # 6 secs
        min_conditioning_length=66150,  # 3 secs
        debug_loading_failures=False,
        max_wav_length=255995,  # ~11.6 seconds
        max_text_length=200,
        mel_norm_file=MEL_NORM_FILE,
        dvae_checkpoint=DVAE_CHECKPOINT,
        xtts_checkpoint=XTTS_CHECKPOINT,  # checkpoint path of the model that you want to fine-tune
        tokenizer_file=TOKENIZER_FILE,
        gpt_num_audio_tokens=1026,
        gpt_start_audio_token=1024,
        gpt_stop_audio_token=1025,
        gpt_use_masking_gt_prompt_approach=True,
        gpt_use_perceiver_resampler=True,
    )
    # define audio config
    audio_config = XttsAudioConfig(sample_rate=22050, dvae_sample_rate=22050, output_sample_rate=24000)
    # training parameters config
    config = GPTTrainerConfig(
        output_path=OUT_PATH,
        model_args=model_args,
        run_name=RUN_NAME,
        project_name=PROJECT_NAME,
        run_description=&quot;&quot;&quot;
            GPT XTTS training
            &quot;&quot;&quot;,
        dashboard_logger=DASHBOARD_LOGGER,
        logger_uri=LOGGER_URI,
        audio=audio_config,
        batch_size=BATCH_SIZE,
        batch_group_size=48,
        eval_batch_size=BATCH_SIZE,
        num_loader_workers=8,
        eval_split_max_size=256,
        print_step=50,
        plot_step=100,
        log_model_step=1000,
        save_step=10000,
        save_n_checkpoints=1,
        save_checkpoints=True,
        # target_loss=&quot;loss&quot;,
        print_eval=False,
        # Optimizer values like tortoise, pytorch implementation with modifications to not apply WD to non-weight parameters.
        optimizer=&quot;AdamW&quot;,
        optimizer_wd_only_on_weights=OPTIMIZER_WD_ONLY_ON_WEIGHTS,
        optimizer_params={&quot;betas&quot;: [0.9, 0.96], &quot;eps&quot;: 1e-8, &quot;weight_decay&quot;: 1e-2},
        lr=5e-06,  # learning rate
        lr_scheduler=&quot;StepLR&quot;,
        # it was adjusted accordly for the new step scheme
        lr_scheduler_params={&quot;step_size&quot;: 50, &quot;gamma&quot;: 0.5, &quot;last_epoch&quot;: -1},
        test_sentences=[
            {
                &quot;text&quot;: &quot;やったー！アクア様登場だよ！&quot;,
                &quot;speaker_wav&quot;: SPEAKER_REFERENCE,
                &quot;language&quot;: LANGUAGE,
            },
            {
                &quot;text&quot;: &quot;水の女神様、アクアさまが貴方にサービス♪ 今日は何か素敵なことをしてあげようかしら？&quot;,
                &quot;speaker_wav&quot;: SPEAKER_REFERENCE,
                &quot;language&quot;: LANGUAGE,
            },
            {
                &quot;text&quot;: &quot;もちろん、アクア様のことだから、どんな困難だってバッチリ対処してみせるわ。&quot;,
                &quot;speaker_wav&quot;: SPEAKER_REFERENCE,
                &quot;language&quot;: LANGUAGE,
            },
            {
                &quot;text&quot;: &quot;冒険？もちろん、冒険ってのは私の得意分野よ。&quot;,
                &quot;speaker_wav&quot;: SPEAKER_REFERENCE,
                &quot;language&quot;: LANGUAGE,
            },
            {
                &quot;text&quot;: &quot;これからもみんなに祝福!&quot;,
                &quot;speaker_wav&quot;: SPEAKER_REFERENCE,
                &quot;language&quot;: LANGUAGE,
            },
            {
                &quot;text&quot;: &quot;この子きっと消えちゃうわよ!&quot;,
                &quot;speaker_wav&quot;: SPEAKER_REFERENCE,
                &quot;language&quot;: LANGUAGE,
            },
            {
                &quot;text&quot;: &quot;ちょっとウィズあんたこそなんとかできないの?&quot;,
                &quot;speaker_wav&quot;: SPEAKER_REFERENCE,
                &quot;language&quot;: LANGUAGE,
            },
            {
                &quot;text&quot;: &quot;この分だと任せといても大丈夫よ&quot;,
                &quot;speaker_wav&quot;: SPEAKER_REFERENCE,
                &quot;language&quot;: LANGUAGE,
            },
        ],
    )

    # init the model from config
    model = GPTTrainer.init_from_config(config)
    
    # load training samples
    train_samples, eval_samples = load_tts_samples(
        DATASETS_CONFIG_LIST,
        eval_split=True,
        eval_split_max_size=config.eval_split_max_size,
        eval_split_size=config.eval_split_size,
    )

    # init the trainer and  
    trainer = Trainer(
        TrainerArgs(
            restore_path=None,  # xtts checkpoint is restored via xtts_checkpoint key so no need of restore it using Trainer restore_path parameter
            skip_train_epoch=False,
            start_with_eval=START_WITH_EVAL,
            grad_accum_steps=GRAD_ACUMM_STEPS,
        ),
        config,
        output_path=OUT_PATH,
        model=model,
        train_samples=train_samples,
        eval_samples=eval_samples,
    )
    trainer.fit()


if __name__ == &quot;__main__&quot;:
    main()&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;실행중에 텐서보드를 열면 학습이 진행중인 오디오를 볼수가 있는데요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습의 난이도는 전적으로 준 음성의 음질이 우수하냐, 소음이 없으냐에 달려 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2시간정도 학습을 시키면 어느정도 음성이 잘 나오기에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로그램을 종료하시고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;937&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pMGsY/btsHBPiQOkI/Gb9XLAc7J7IjrfmofO6KQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pMGsY/btsHBPiQOkI/Gb9XLAc7J7IjrfmofO6KQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pMGsY/btsHBPiQOkI/Gb9XLAc7J7IjrfmofO6KQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpMGsY%2FbtsHBPiQOkI%2FGb9XLAc7J7IjrfmofO6KQ1%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;2000&quot; height=&quot;937&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;937&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;~.pth 가 학습된 모델이고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;XTTS_v2.0_original_model_files 에서 따로 vocab.json 을 복사해서 폴더에 넣어주시길 바랍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델들 중 하나를 골라서 model.pth로 이름을 변경해 주시고&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;pre id=&quot;code_1716641767012&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import os
import torch
import torchaudio
from TTS.tts.configs.xtts_config import XttsConfig
from TTS.tts.models.xtts import Xtts

print(&quot;Loading model...&quot;)
config = XttsConfig()
config.load_json(&quot;./workspace/run/training/GPTTrain/config.json&quot;)
model = Xtts.init_from_config(config)
model.load_checkpoint(config, checkpoint_dir=&quot;./workspace/run/training/GPTTrain/&quot;, use_deepspeed=False)
model.cuda()

print(&quot;Computing speaker latents...&quot;)
gpt_cond_latent, speaker_embedding = model.get_conditioning_latents(audio_path=[&quot;./workspace/wavs/output0.wav&quot;])

print(&quot;Inference...&quot;)
out = model.inference(
    &quot;この分だと任せといても大丈夫よ 魔法の収集を続けるよ 100年くらいは中央諸国を巡る予定だから&quot;,
    &quot;ja&quot;,
    gpt_cond_latent,
    speaker_embedding,
    temperature=0.7, # Add custom parameters here
)
torchaudio.save(&quot;xtts.wav&quot;, torch.tensor(out[&quot;wav&quot;]).unsqueeze(0), 24000)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저같은경우는 FastAPI 서버를 이용해서 서버가 음성학습을 시키도록 작업을 해두었습니다. 그 코드는 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1716641780165&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from fastapi import FastAPI
from fastapi.responses import FileResponse
import subprocess
import torch
import torchaudio
from TTS.tts.configs.xtts_config import XttsConfig
from TTS.tts.models.xtts import Xtts


# Make the GET request
params = {
    'query': 'text'
}
config = XttsConfig()
config.load_json(&quot;./workspace/run/training/GPTTrain/config.json&quot;)
model = Xtts.init_from_config(config)
model.load_checkpoint(
    config,
    checkpoint_dir=&quot;./workspace/run/training/GPTTrain/&quot;,
    use_deepspeed=True
)
model.cuda()

print(&quot;Computing speaker latents...&quot;)
gpt_cond_latent, speaker_embedding = model.get_conditioning_latents(
    audio_path=[&quot;./workspace/wavs/output0.wav&quot;]
)

app = FastAPI()

@app.get(&quot;/tts&quot;)
def get_wav(query):
    print(query)
    print(&quot;Inference...&quot;)
    out = model.inference(
        query,
        &quot;ja&quot;,
        gpt_cond_latent,
        speaker_embedding,
        temperature=0.7,  # Add custom parameters here
    )
    torchaudio.save(
        &quot;xtts.wav&quot;,
        torch.tensor(out[&quot;wav&quot;]).unsqueeze(0),
        24000
    )
    command = [&quot;ffmpeg&quot;, &quot;-y&quot;, &quot;-i&quot;, &quot;xtts.wav&quot;, &quot;-ar&quot;,
               &quot;44100&quot;, &quot;-ac&quot;, &quot;1&quot;, &quot;-acodec&quot;, &quot;pcm_s16le&quot;, &quot;output_wav.wav&quot;]
    subprocess.run(command, check=True)
    return FileResponse('./output_wav.wav', media_type='audio/wav')&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;h3 data-ke-size=&quot;size23&quot;&gt;VB Cable와 VTube Studio로 캐릭터 모방&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 영상처럼 내가 일어로 말을 걸면 캐릭터가 대답하는 기능을 구현하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VTube Studio &lt;a href=&quot;https://denchisoft.com/&quot;&gt;https://denchisoft.com/&lt;/a&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;a href=&quot;https://youtu.be/rHHJHiWg66c?si=PTpxik9wILA6rWNn&quot;&gt;https://youtu.be/rHHJHiWg66c?si=PTpxik9wILA6rWNn&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2D 프리렌 라이브 모델을 설치해 줍시다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VTube Studio는 마이크의 음성에 맞게 캐릭터가 입을 움직이게 하는 기능이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이기능을 그대로 쓰면 음성이 재생될 때가 아니라 내가 말을 할 때 캐릭터가 말을 하는 대참사가 일어납니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러기 위해서 가상 케이블인 VB Cable을 설치해 줄겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;캐릭터 음성을 VB Cable의 마이크에 재생을 하고 그걸 VTube Studio에서 입을 움직이게 하는 겁니다.&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;2000&quot; data-origin-height=&quot;1588&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Pp5zr/btsHCPIIJ6V/090KBQiJT2gY0wp03jJiV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Pp5zr/btsHCPIIJ6V/090KBQiJT2gY0wp03jJiV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Pp5zr/btsHCPIIJ6V/090KBQiJT2gY0wp03jJiV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPp5zr%2FbtsHCPIIJ6V%2F090KBQiJT2gY0wp03jJiV0%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;2000&quot; height=&quot;1588&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1588&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;VTube Studio에서 마이크로폰을 VB-Cable로 설정해주고&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1897&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQquaq/btsHBy2yXhc/C1mE2Hp6oXR0B0fpEd0b4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQquaq/btsHBy2yXhc/C1mE2Hp6oXR0B0fpEd0b4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQquaq/btsHBy2yXhc/C1mE2Hp6oXR0B0fpEd0b4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQquaq%2FbtsHBy2yXhc%2FC1mE2Hp6oXR0B0fpEd0b4k%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;2000&quot; height=&quot;1897&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1897&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1901&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z7S5u/btsHCSFpZHT/7jcxe1x8fcLHZ8ZYuIZeLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z7S5u/btsHCSFpZHT/7jcxe1x8fcLHZ8ZYuIZeLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z7S5u/btsHCSFpZHT/7jcxe1x8fcLHZ8ZYuIZeLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz7S5u%2FbtsHCSFpZHT%2F7jcxe1x8fcLHZ8ZYuIZeLK%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;2000&quot; height=&quot;1901&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1901&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;Mouth Open, Mouth Form의 인풋을 &amp;lsquo;VoiceFrequencyPlusMouthSmile&amp;rsquo; 과 &amp;lsquo;VoiceVolumePlusMouthOpen&amp;rsquo; 으로 설정해 줍니다.&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;이제 음성을 VB Cable의 인풋으로 설정해야 하는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pyAudio에서 VB Cable의 인풋이 몇번 인덱스인지 알아내야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 코드를 이용하면 VB Cable 입력의 인덱스를 알 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1716641910520&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import pyaudio
import wave
import subprocess

p = pyaudio.PyAudio()

devices = p.get_device_count()
# Iterate through all devices
for i in range(devices):
    # Get the device info
    device_info = p.get_device_info_by_index(i)
    # Check if this device is a microphone (an input device)
    if device_info.get('maxInputChannels') &amp;gt; 0:
        print(f&quot;입력: {device_info.get('name')} , Device Index: {device_info.get('index')}&quot;)
    else:
        print(f&quot;출력: {device_info.get('name')} , Device Index: {device_info.get('index')}&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;470&quot; data-origin-height=&quot;180&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bv25Zg/btsHCs1u4nM/eqkYOTLf1KzKbmhgflk0a0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bv25Zg/btsHCs1u4nM/eqkYOTLf1KzKbmhgflk0a0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bv25Zg/btsHCs1u4nM/eqkYOTLf1KzKbmhgflk0a0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbv25Zg%2FbtsHCs1u4nM%2FeqkYOTLf1KzKbmhgflk0a0%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;470&quot; height=&quot;180&quot; data-origin-width=&quot;470&quot; data-origin-height=&quot;180&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;제 컴퓨터에선 5번입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 내용을 기반으로 VB Cable 입력과 스피커에서 음성을 동시재생하면 VTube Studio에서도&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;pre id=&quot;code_1716641948733&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import pyaudio
import wave
import subprocess

p = pyaudio.PyAudio()

devices = p.get_device_count()
# Iterate through all devices
for i in range(devices):
    # Get the device info
    device_info = p.get_device_info_by_index(i)
    # Check if this device is a microphone (an input device)
    if device_info.get('maxInputChannels') &amp;gt; 0:
        print(f&quot;입력: {device_info.get('name')} , Device Index: {device_info.get('index')}&quot;)
    else:
        print(f&quot;출력: {device_info.get('name')} , Device Index: {device_info.get('index')}&quot;)


def play_wav_file(filename):
    # Open the file
    # Get the number of audio I/O devices
    p = pyaudio.PyAudio()

    command = [&quot;ffmpeg&quot;, &quot;-y&quot;, &quot;-i&quot;, filename, &quot;-ar&quot;, &quot;44100&quot;, &quot;-ac&quot;, &quot;1&quot;, &quot;-acodec&quot;, &quot;pcm_s16le&quot;, &quot;output_wav.wav&quot;]
    subprocess.run(command, check=True)
    wav_file = wave.open(&quot;output_wav.wav&quot;, 'rb')

    # Create a PyAudio instance
    p = pyaudio.PyAudio()

    # Open a stream
    stream = p.open(format=p.get_format_from_width(wav_file.getsampwidth()),
                    channels=wav_file.getnchannels(),
                    rate=wav_file.getframerate(),
                    output_device_index=5,
                    output=True)
    streamTwo = p.open(format=p.get_format_from_width(wav_file.getsampwidth()),
                    channels=wav_file.getnchannels(),
                    rate=wav_file.getframerate(),
                    output=True)

    # Read data from the file
    data = wav_file.readframes(1024)

    # Play the file by streaming the data
    while data:
        stream.write(data)
        streamTwo.write(data)
        data = wav_file.readframes(1024)

    # Close the stream and terminate the PyAudio instance
    stream.stop_stream()
    stream.close()
    p.terminate()

# Use the function
play_wav_file('xtts.wav')&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;h1&gt;종합&lt;/h1&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;pre id=&quot;code_1716641980500&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import pyaudio
import wave
import requests
import re

# Load the Whisper model once
import time
from openai import OpenAI

client = OpenAI(
  api_key=''
)
assistant = client.beta.assistants.retrieve(
    assistant_id=''
)
thread = client.beta.threads.create()

def wait_on_run(run, thread):
    while run.status == &quot;queued&quot; or run.status == &quot;in_progress&quot;:
        run = client.beta.threads.runs.retrieve(
            thread_id=thread.id,
            run_id=run.id,
        )
        time.sleep(0.5)
    return run


def get_response(content):
    message = client.beta.threads.messages.create(
        thread_id=thread.id,
        role='user',
        content=content
    )



    # Execute our run
    run = client.beta.threads.runs.create(
        thread_id=thread.id,
        assistant_id=assistant.id,
    )

    # Wait for completion
    wait_on_run(run, thread)
    # Retrieve all the messages added after our last user message
    messages = client.beta.threads.messages.list(
        thread_id=thread.id, order=&quot;asc&quot;, after=message.id
    )
    response_text = &quot;&quot;
    for message in messages:
        for c in message.content:
            response_text += c.text.value
    clean_text = re.sub('【.*?】', '', response_text)
    return clean_text

def play_wav_file(filename):
    # Open the file
    wav_file = wave.open(filename, 'rb')

    # Create a PyAudio instance
    p = pyaudio.PyAudio()

    # Open a stream
    stream = p.open(format=p.get_format_from_width(wav_file.getsampwidth()),
                    channels=wav_file.getnchannels(),
                    rate=wav_file.getframerate(),
                    output_device_index=6,
                    output=True)
    streamTwo = p.open(format=p.get_format_from_width(wav_file.getsampwidth()),
                       channels=wav_file.getnchannels(),
                       rate=wav_file.getframerate(),
                       output=True)

    # Read data from the file
    data = wav_file.readframes(1024)

    # Play the file by streaming the data
    while data:
        stream.write(data)
        # streamTwo.write(data)
        data = wav_file.readframes(1024)

    # Close the stream and terminate the PyAudio instance
    stream.stop_stream()
    stream.close()
    streamTwo.stop_stream()
    streamTwo.close()
    p.terminate()

def make_tts(content):
    params = {
        'query': content,
    }
    response = requests.get('http://79.116.154.98:35040/tts', params=params)

    # Check if the request was successful
    if response.status_code == 200:
        # Write the content to a file
        with open('downloaded.wav', 'wb') as file:
            file.write(response.content)
    else:
        print(f&quot;Request failed with status code {response.status_code}&quot;)
    play_wav_file('downloaded.wav')

def transcribe_directly():
    sample_rate = 16000
    bits_per_sample = 16
    chunk_size = 1024
    audio_format = pyaudio.paInt16
    channels = 1

    def callback(in_data, frame_count, time_info, status):
        wav_file.writeframes(in_data)
        return None, pyaudio.paContinue

    wav_file = wave.open('output.wav', 'wb')
    wav_file.setnchannels(channels)
    wav_file.setsampwidth(bits_per_sample // 8)
    wav_file.setframerate(sample_rate)

    audio = pyaudio.PyAudio()
    input(&quot;Press Enter to start recording...&quot;)
    stream = audio.open(format=audio_format,
                        channels=channels,
                        rate=sample_rate,
                        input=True,
                        frames_per_buffer=chunk_size,
                        input_device_index=0,
                        stream_callback=callback)

    input(&quot;Press Enter to stop recording...&quot;)
    stream.stop_stream()
    stream.close()
    audio.terminate()

    wav_file.close()

    audio_file = open('output.wav', &quot;rb&quot;)
    transcription = client.audio.transcriptions.create(
        model=&quot;whisper-1&quot;,
        file=audio_file,
        response_format = &quot;text&quot;,
        language=&quot;ja&quot;
    )
    # print(transcription)
    return transcription




while True:
  content = transcribe_directly()
  print(content)

  response = get_response(content)
  print(response)
  make_tts(response)&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;이렇게 AI 캐릭터를 ChatGPT로 만들어보는 코드를 알아보았습니다.&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;a href=&quot;https://youtu.be/oB8C4FcZDD0?si=tTtcgVCv268iAOfl&quot;&gt;AI 프리렌 - ChatGPT로 캐릭터 인격 만들기&lt;/a&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;</description>
      <author> aa</author>
      <guid isPermaLink="true">https://sesang06.tistory.com/216</guid>
      <comments>https://sesang06.tistory.com/216#entry216comment</comments>
      <pubDate>Sat, 25 May 2024 22:02:53 +0900</pubDate>
    </item>
    <item>
      <title>시애틀 여행 (마무리)</title>
      <link>https://sesang06.tistory.com/215</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;좀 일찍 나올까 하긴 했는데&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;그러다 이러면 안되겠다 해서 밖으로 나왔다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;솔직히 말하면 밥먹으러 나온 점도 있긴하다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 간 곳은 Kerry Park&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트리플인가에서 사진 찍기 좋아 보이는 곳이라고 해서 갔다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4EEqW/btsrgmizPYA/VRbSymTRZ7hvkCuUikOEQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4EEqW/btsrgmizPYA/VRbSymTRZ7hvkCuUikOEQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4EEqW/btsrgmizPYA/VRbSymTRZ7hvkCuUikOEQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4EEqW%2FbtsrgmizPYA%2FVRbSymTRZ7hvkCuUikOEQ0%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/x0Ccc/btsrf3cuagj/uxKIruiISjDLWkf5YDoPzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/x0Ccc/btsrf3cuagj/uxKIruiISjDLWkf5YDoPzk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/x0Ccc/btsrf3cuagj/uxKIruiISjDLWkf5YDoPzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fx0Ccc%2Fbtsrf3cuagj%2FuxKIruiISjDLWkf5YDoPzk%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&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;&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;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oOnWD/btsq7ap1cty/4p8fS4PZLxZGjqzEcxUak1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oOnWD/btsq7ap1cty/4p8fS4PZLxZGjqzEcxUak1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oOnWD/btsq7ap1cty/4p8fS4PZLxZGjqzEcxUak1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoOnWD%2Fbtsq7ap1cty%2F4p8fS4PZLxZGjqzEcxUak1%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&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;아무말의 결론) 개부러움&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 해질떄까지 존버하려고 했지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위도가 높아서 그런지 8시에 해가 진다고 했다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;8시까지 기다리는건 삽에바이다&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;앞글자만 따서 UW이라 쓴다&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBnRfi/btsrgTHdgTm/3BgdZxpkDkHoPK4CKZlpF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBnRfi/btsrgTHdgTm/3BgdZxpkDkHoPK4CKZlpF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBnRfi/btsrgTHdgTm/3BgdZxpkDkHoPK4CKZlpF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBnRfi%2FbtsrgTHdgTm%2F3BgdZxpkDkHoPK4CKZlpF1%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GLLwv/btsrjrDqy3h/HRhePRKZXEeKdK8Veo2qlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GLLwv/btsrjrDqy3h/HRhePRKZXEeKdK8Veo2qlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GLLwv/btsrjrDqy3h/HRhePRKZXEeKdK8Veo2qlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGLLwv%2FbtsrjrDqy3h%2FHRhePRKZXEeKdK8Veo2qlK%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kNza0/btsro9CsRxs/cB3IQPyzFLzGOKPgZvgXWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kNza0/btsro9CsRxs/cB3IQPyzFLzGOKPgZvgXWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kNza0/btsro9CsRxs/cB3IQPyzFLzGOKPgZvgXWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkNza0%2Fbtsro9CsRxs%2FcB3IQPyzFLzGOKPgZvgXWK%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&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;&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;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkfX1e/btsq2P7tF0I/NhgUbQFSALq2Lo16wmasOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkfX1e/btsq2P7tF0I/NhgUbQFSALq2Lo16wmasOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkfX1e/btsq2P7tF0I/NhgUbQFSALq2Lo16wmasOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkfX1e%2Fbtsq2P7tF0I%2FNhgUbQFSALq2Lo16wmasOK%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbSyHB/btsrhH0QWwn/tch7EHFPu3tkuK7zzhmURK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbSyHB/btsrhH0QWwn/tch7EHFPu3tkuK7zzhmURK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbSyHB/btsrhH0QWwn/tch7EHFPu3tkuK7zzhmURK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbSyHB%2FbtsrhH0QWwn%2Ftch7EHFPu3tkuK7zzhmURK%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ngiVL/btsq5XEfRgI/jmH9KvHUEabfCKTW9RBt81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ngiVL/btsq5XEfRgI/jmH9KvHUEabfCKTW9RBt81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ngiVL/btsq5XEfRgI/jmH9KvHUEabfCKTW9RBt81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FngiVL%2Fbtsq5XEfRgI%2FjmH9KvHUEabfCKTW9RBt81%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4YjmD/btsrkOST4wJ/i67pLr2z9KJxoLaCBk4c6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4YjmD/btsrkOST4wJ/i67pLr2z9KJxoLaCBk4c6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4YjmD/btsrkOST4wJ/i67pLr2z9KJxoLaCBk4c6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4YjmD%2FbtsrkOST4wJ%2Fi67pLr2z9KJxoLaCBk4c6k%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdnwQA/btsrcsKoGVY/zjkWXwqSgXBlcdKK0Q5kyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdnwQA/btsrcsKoGVY/zjkWXwqSgXBlcdKK0Q5kyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdnwQA/btsrcsKoGVY/zjkWXwqSgXBlcdKK0Q5kyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdnwQA%2FbtsrcsKoGVY%2FzjkWXwqSgXBlcdKK0Q5kyK%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대충 해질때까지 구경하고 &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQpDPD/btsrctJiltR/nrcP1Eb6GZNVMYZtqf7Vzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQpDPD/btsrctJiltR/nrcP1Eb6GZNVMYZtqf7Vzk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQpDPD/btsrctJiltR/nrcP1Eb6GZNVMYZtqf7Vzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQpDPD%2FbtsrctJiltR%2FnrcP1Eb6GZNVMYZtqf7Vzk%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&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;</description>
      <author> aa</author>
      <guid isPermaLink="true">https://sesang06.tistory.com/215</guid>
      <comments>https://sesang06.tistory.com/215#entry215comment</comments>
      <pubDate>Wed, 16 Aug 2023 12:33:56 +0900</pubDate>
    </item>
    <item>
      <title>시애틀 여행 - 4</title>
      <link>https://sesang06.tistory.com/214</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d6A2sh/btsrkQXvekM/ZoNbIBRyjMf9x3BdcaUCE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d6A2sh/btsrkQXvekM/ZoNbIBRyjMf9x3BdcaUCE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d6A2sh/btsrkQXvekM/ZoNbIBRyjMf9x3BdcaUCE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd6A2sh%2FbtsrkQXvekM%2FZoNbIBRyjMf9x3BdcaUCE1%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&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;걍 애매리칸 서타일의 도우넛&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tk2v9/btsrjsCkzYc/7GSGrbJHNlYX9C3KXtkbW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tk2v9/btsrjsCkzYc/7GSGrbJHNlYX9C3KXtkbW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tk2v9/btsrjsCkzYc/7GSGrbJHNlYX9C3KXtkbW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ftk2v9%2FbtsrjsCkzYc%2F7GSGrbJHNlYX9C3KXtkbW1%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btK80f/btsrffD0phC/il3Nb2V5svNkX9meUvug80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btK80f/btsrffD0phC/il3Nb2V5svNkX9meUvug80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btK80f/btsrffD0phC/il3Nb2V5svNkX9meUvug80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtK80f%2FbtsrffD0phC%2Fil3Nb2V5svNkX9meUvug80%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&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;원탑 : 서타벅스 1호점&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;투탑: 아마존 고&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VDVFg/btsrglDZBMi/RXJvAOo8a7jjrLS4ONn8F1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VDVFg/btsrglDZBMi/RXJvAOo8a7jjrLS4ONn8F1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VDVFg/btsrglDZBMi/RXJvAOo8a7jjrLS4ONn8F1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVDVFg%2FbtsrglDZBMi%2FRXJvAOo8a7jjrLS4ONn8F1%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&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;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Di0lu/btsrdjT9XGo/csUmWHM3sVc0SZzVFOSR5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Di0lu/btsrdjT9XGo/csUmWHM3sVc0SZzVFOSR5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Di0lu/btsrdjT9XGo/csUmWHM3sVc0SZzVFOSR5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDi0lu%2FbtsrdjT9XGo%2FcsUmWHM3sVc0SZzVFOSR5k%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&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;</description>
      <author> aa</author>
      <guid isPermaLink="true">https://sesang06.tistory.com/214</guid>
      <comments>https://sesang06.tistory.com/214#entry214comment</comments>
      <pubDate>Wed, 16 Aug 2023 12:31:03 +0900</pubDate>
    </item>
    <item>
      <title>시애틀 여행 - 3</title>
      <link>https://sesang06.tistory.com/213</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;2667&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zQ4hK/btsq7aKgHcQ/nJe0Or15lN6qFLcBP02IXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zQ4hK/btsq7aKgHcQ/nJe0Or15lN6qFLcBP02IXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zQ4hK/btsq7aKgHcQ/nJe0Or15lN6qFLcBP02IXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzQ4hK%2Fbtsq7aKgHcQ%2FnJe0Or15lN6qFLcBP02IXK%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;2000&quot; height=&quot;2667&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;2667&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;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7jrUf/btsroILERJr/X5t0ComXYsIMe06PlejHn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7jrUf/btsroILERJr/X5t0ComXYsIMe06PlejHn0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7jrUf/btsroILERJr/X5t0ComXYsIMe06PlejHn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7jrUf%2FbtsroILERJr%2FX5t0ComXYsIMe06PlejHn0%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;호텔에서 조식을 먹었는데 커피까지 합해서 23달러였다.&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;미국은 팁의 문화가 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 15% 이하로 주면 모욕을 당할수 있다고 한다&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;팁을 한푼도 안준 개진상이 되어버린 것이다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;거지근성이 남아있다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zYyAD/btsq5dgccSA/ZB3dsJyc6yzWp4GfDMq3wk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zYyAD/btsq5dgccSA/ZB3dsJyc6yzWp4GfDMq3wk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zYyAD/btsq5dgccSA/ZB3dsJyc6yzWp4GfDMq3wk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzYyAD%2Fbtsq5dgccSA%2FZB3dsJyc6yzWp4GfDMq3wk%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/psW02/btsrffxcAIM/7CfOWlS3Kp9KE2RlxbWpS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/psW02/btsrffxcAIM/7CfOWlS3Kp9KE2RlxbWpS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/psW02/btsrffxcAIM/7CfOWlS3Kp9KE2RlxbWpS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpsW02%2FbtsrffxcAIM%2F7CfOWlS3Kp9KE2RlxbWpS1%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXtI7e/btsq69LlokH/mKBk1v06wyFZhJI3AOUAmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXtI7e/btsq69LlokH/mKBk1v06wyFZhJI3AOUAmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXtI7e/btsq69LlokH/mKBk1v06wyFZhJI3AOUAmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXtI7e%2Fbtsq69LlokH%2FmKBk1v06wyFZhJI3AOUAmk%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&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;저 굴 12조각에 43달러이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;팁(+20%) 택스(+10) 까지 할증이 붙는다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기는 뭐 음식이 택시인가 야간할증붙게 이게맞나??&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;굴은 맛있긴 하다&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;그리고 연어알을 퍼먹는 개부자 플레이를 했다.&lt;/p&gt;</description>
      <author> aa</author>
      <guid isPermaLink="true">https://sesang06.tistory.com/213</guid>
      <comments>https://sesang06.tistory.com/213#entry213comment</comments>
      <pubDate>Wed, 16 Aug 2023 12:29:24 +0900</pubDate>
    </item>
    <item>
      <title>시애틀 여행 - 2</title>
      <link>https://sesang06.tistory.com/212</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;바람불고 문닫고 하다니 매우 유감스럽다고 하겠다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/clbePY/btsrh068vIG/PVgGuU0hKUlzHQHpg6GLy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/clbePY/btsrh068vIG/PVgGuU0hKUlzHQHpg6GLy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/clbePY/btsrh068vIG/PVgGuU0hKUlzHQHpg6GLy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FclbePY%2Fbtsrh068vIG%2FPVgGuU0hKUlzHQHpg6GLy1%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b511Mo/btsrf3XQpye/xf0xo8znVuYI31Xt1lzek1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b511Mo/btsrf3XQpye/xf0xo8znVuYI31Xt1lzek1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b511Mo/btsrf3XQpye/xf0xo8znVuYI31Xt1lzek1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb511Mo%2Fbtsrf3XQpye%2Fxf0xo8znVuYI31Xt1lzek1%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&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;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;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7hpJo/btsrgSnZRYE/v3ePxi5zK9BCnJIJq0JyE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7hpJo/btsrgSnZRYE/v3ePxi5zK9BCnJIJq0JyE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7hpJo/btsrgSnZRYE/v3ePxi5zK9BCnJIJq0JyE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7hpJo%2FbtsrgSnZRYE%2Fv3ePxi5zK9BCnJIJq0JyE0%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&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;시애틀에는 서타벅스 1호점이 있다.&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;대부분 기념품은 본국에 들어가면 예쁜 쓰레기가 되어 서랍 바닥칸에 잠들어 버린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 이번엔 엄마가 서타박스에서 기념품을 사오라고 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러므로 서타벅스 1호점으로 직행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우중충한 날씨에도 서타벅스에 갔더니 줄이 길었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기다리는데 한 삼십분 걸렸다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;2667&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ci8GEn/btsq5fd1lHJ/MUz4J07vFDyRBavbFnZ3ck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ci8GEn/btsq5fd1lHJ/MUz4J07vFDyRBavbFnZ3ck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ci8GEn/btsq5fd1lHJ/MUz4J07vFDyRBavbFnZ3ck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fci8GEn%2Fbtsq5fd1lHJ%2FMUz4J07vFDyRBavbFnZ3ck%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;2000&quot; height=&quot;2667&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;2667&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOYTuo/btsrglcWZ40/QcKUnKcyLBxrTKjbLe9hUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOYTuo/btsrglcWZ40/QcKUnKcyLBxrTKjbLe9hUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOYTuo/btsrglcWZ40/QcKUnKcyLBxrTKjbLe9hUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOYTuo%2FbtsrglcWZ40%2FQcKUnKcyLBxrTKjbLe9hUK%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&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;유럽에선 냉커피를 마셔본적이 없기 때문이다.&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;여기 문화상 팁을 안주면 원한을 살수 있다.&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;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfNTwm/btsrcsXUDqR/Bkdni9PoeCq77wrVLjJJf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfNTwm/btsrcsXUDqR/Bkdni9PoeCq77wrVLjJJf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfNTwm/btsrcsXUDqR/Bkdni9PoeCq77wrVLjJJf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfNTwm%2FbtsrcsXUDqR%2FBkdni9PoeCq77wrVLjJJf1%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GivcE/btsrgj0s0mI/KMlmss9IeaqPFY2kJUwSnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GivcE/btsrgj0s0mI/KMlmss9IeaqPFY2kJUwSnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GivcE/btsrgj0s0mI/KMlmss9IeaqPFY2kJUwSnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGivcE%2Fbtsrgj0s0mI%2FKMlmss9IeaqPFY2kJUwSnK%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&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;근데 여기 미국놈들 디저트는 냄새부터가 부담스럽다.&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;이친구들은 그 미학을 배우지 못한 것 같다.&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boDAsx/btsrgsQB0Re/3JckOdfvwAkDkoGkXDr5IK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boDAsx/btsrgsQB0Re/3JckOdfvwAkDkoGkXDr5IK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boDAsx/btsrgsQB0Re/3JckOdfvwAkDkoGkXDr5IK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboDAsx%2FbtsrgsQB0Re%2F3JckOdfvwAkDkoGkXDr5IK%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;2667&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dqgo5q/btsq2QrKHvV/ZrkwD5K9kicbqBdk9sLgB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dqgo5q/btsq2QrKHvV/ZrkwD5K9kicbqBdk9sLgB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dqgo5q/btsq2QrKHvV/ZrkwD5K9kicbqBdk9sLgB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdqgo5q%2Fbtsq2QrKHvV%2FZrkwD5K9kicbqBdk9sLgB1%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;2000&quot; height=&quot;2667&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;2667&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GPGS8/btsrgkykdMG/CkriGdWYT1LAgjOw9Tbtc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GPGS8/btsrgkykdMG/CkriGdWYT1LAgjOw9Tbtc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GPGS8/btsrgkykdMG/CkriGdWYT1LAgjOw9Tbtc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGPGS8%2FbtsrgkykdMG%2FCkriGdWYT1LAgjOw9Tbtc1%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&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;그래서 눈으로만 빠르게 아이쇼핑&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;보조배터리를 두고온 바보이므로 45달러 정도에 2만밀리암페어짜리를 하나 샀다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그외에 수면유도제인 멜라토닌을 몇개 구매했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하겐다즈가 파인트가 8달라정도밖에 안했지만&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 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;솔직히 낮에도 눈마주치기 무섭다 밤엔 절대 가고싶지않다.&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;&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;2667&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAEzeQ/btsrhEQzfxq/7nJxbP1JnYazSytFSKtsrk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAEzeQ/btsrhEQzfxq/7nJxbP1JnYazSytFSKtsrk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAEzeQ/btsrhEQzfxq/7nJxbP1JnYazSytFSKtsrk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAEzeQ%2FbtsrhEQzfxq%2F7nJxbP1JnYazSytFSKtsrk%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;2000&quot; height=&quot;2667&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;2667&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;내 경험상 서양에서 파는 재패니즈 음식은 맛은 동양에 비해 열화되었는데&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;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6EGXp/btsrf5uCt5D/UD5RIaowRpxPyjs4r7Zb3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6EGXp/btsrf5uCt5D/UD5RIaowRpxPyjs4r7Zb3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6EGXp/btsrf5uCt5D/UD5RIaowRpxPyjs4r7Zb3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6EGXp%2Fbtsrf5uCt5D%2FUD5RIaowRpxPyjs4r7Zb3K%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&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;hellip; (이하 오타쿠 TMI 생략)&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TX1Fk/btsroJ4QV88/EdTufJVZFkRkE3h4EUT1h1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TX1Fk/btsroJ4QV88/EdTufJVZFkRkE3h4EUT1h1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TX1Fk/btsroJ4QV88/EdTufJVZFkRkE3h4EUT1h1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTX1Fk%2FbtsroJ4QV88%2FEdTufJVZFkRkE3h4EUT1h1%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CUtuU/btsrfiAJhfu/RX8MUAFxL8CumK88tuy1Sk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CUtuU/btsrfiAJhfu/RX8MUAFxL8CumK88tuy1Sk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CUtuU/btsrfiAJhfu/RX8MUAFxL8CumK88tuy1Sk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCUtuU%2FbtsrfiAJhfu%2FRX8MUAFxL8CumK88tuy1Sk%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&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;br /&gt;&lt;br /&gt;시차적응이 안되어있어 바로 잤다 + 멜라토닌 약발 오짐&lt;br /&gt;&lt;br /&gt;이상 끝&lt;/p&gt;</description>
      <author> aa</author>
      <guid isPermaLink="true">https://sesang06.tistory.com/212</guid>
      <comments>https://sesang06.tistory.com/212#entry212comment</comments>
      <pubDate>Wed, 16 Aug 2023 12:27:28 +0900</pubDate>
    </item>
    <item>
      <title>시애틀 여행</title>
      <link>https://sesang06.tistory.com/211</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;여행 일정&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4월 둘째 줄에 시애틀, 4월 셋째 주에 래드우드로 갔다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;이스타와 이심&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미국은 여러모로 방문할 때 귀찮은 나라이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방문 비자로 장사를 해처먹는 놀라운 선진 관광국이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 필요한 것은 &amp;lsquo;이스타&amp;rsquo;라고 하는 신고이다.&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;22달러 정도를 소비한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이심은 아이폰에서 요즘 유행하는 무교체 듀얼심이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;30일 20GB로 44달러 정도가 소비한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세계에서 제일 비싼 국가에 가기 위해선 바치는 돈도 상당하다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;프리미엄 이코노미는 비즈니스가 아니다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;살면서 비즈니스는 커녕 국적기의 비싼 이코노미석도 잘 타는 일이 없다. 프리미엄 이코노미라는 영문 모를 좌석이다. 항공권 가격이 100만원을 훌적 넘는다.&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;예를 들어서 누워서 갈 수 있다든지 이런 건 무리이다.&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-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HMaT6/btsrh1ycM6a/47KpQYLZgJeBuPSuFpQ3lk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HMaT6/btsrh1ycM6a/47KpQYLZgJeBuPSuFpQ3lk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HMaT6/btsrh1ycM6a/47KpQYLZgJeBuPSuFpQ3lk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHMaT6%2Fbtsrh1ycM6a%2F47KpQYLZgJeBuPSuFpQ3lk%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&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;하겐다즈를 제공한다는 점이 놀랍다.&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;/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;p data-ke-size=&quot;size16&quot;&gt;델타 항공은 와이파이를 50달러 선에 판매한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결제하지 않더라도 페이스북 메시지를 송수신할 수 있는 은혜까지는 배풀어 준다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런고로 결제하지 않고, 다운받아 둔 만화나 웹소설, 애니메이션을 보며 시간을 때웠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비록 와이파이는 빼앗겼으나&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;h1&gt;시간 변경선을 넘어 도착&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;항공편의 시간은 한국 기준으로 밤 7시부터 새벽 4시이다. 전날 새벽 3시에 취침, 11시에 일어난 개백수의 삶을 살았다. 시차가 맞지 않아서 거의 깨있는 채로 있었다. 그러니 도착할 때 쯤에는 몹시 피곤하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 날짜 변경선을 넘어가는 관계로, 미국에 도착할 때에는 같은 날 오후 3시경이었다. 탔을때보다 시간이 되감겨졌다. 피곤한 건 여전하므로 객관적으로 보았을 때, 황금같은 주말을 손해 보았다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/crW3IR/btsrgUMSAYJ/hsATGuq82y10SmvXE6Z8vK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/crW3IR/btsrgUMSAYJ/hsATGuq82y10SmvXE6Z8vK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/crW3IR/btsrgUMSAYJ/hsATGuq82y10SmvXE6Z8vK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcrW3IR%2FbtsrgUMSAYJ%2FhsATGuq82y10SmvXE6Z8vK%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미국은 입국심사를 한다. 미국어가 서툰 관계로 몹시 겁을 먹었다. 출장을 위해 오니까 회사에서 서류가 있냐고 한다. 그런 건 없으니 여행 일정 프린트한 것을 보여 주었다. 슥 읽어보더니 보내 주었다. &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rTsrW/btsrdi8OiBi/IjGuQkKx9JLoMEAiZWzLFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rTsrW/btsrdi8OiBi/IjGuQkKx9JLoMEAiZWzLFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rTsrW/btsrdi8OiBi/IjGuQkKx9JLoMEAiZWzLFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrTsrW%2Fbtsrdi8OiBi%2FIjGuQkKx9JLoMEAiZWzLFk%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&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;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZRP3v/btsrgP5Sey6/0btBfRxPk1r56WBV2ma240/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZRP3v/btsrgP5Sey6/0btBfRxPk1r56WBV2ma240/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZRP3v/btsrgP5Sey6/0btBfRxPk1r56WBV2ma240/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZRP3v%2FbtsrgP5Sey6%2F0btBfRxPk1r56WBV2ma240%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uGx8d/btsro9CrUGO/TrqCdbALIBvJtlDi4uGqGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uGx8d/btsro9CrUGO/TrqCdbALIBvJtlDi4uGqGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uGx8d/btsro9CrUGO/TrqCdbALIBvJtlDi4uGqGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuGx8d%2Fbtsro9CrUGO%2FTrqCdbALIBvJtlDi4uGqGK%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMde6h/btsrpaH7GK5/mXLr3ofIPibDf7k5XHTHS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMde6h/btsrpaH7GK5/mXLr3ofIPibDf7k5XHTHS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMde6h/btsrpaH7GK5/mXLr3ofIPibDf7k5XHTHS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMde6h%2FbtsrpaH7GK5%2FmXLr3ofIPibDf7k5XHTHS0%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫날 호텔은 시애틀 다운타운에 있는 4성급이다. 호텔 이름이 북극 클럽이다. 과연 그에 맞게 귀여운 디자인의 인형이 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일견 와인이 보이나, 무료로 물 한병도 주지 않는다. 한국 시간으로 새벽 6시쯤 되는 시간이었으나, 물을 사야 되었다. 근처 세븐일레븐으로 갔다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CoKjZ/btsrgUTGSqb/vNEcggEuxbA24JtjTjpfAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CoKjZ/btsrgUTGSqb/vNEcggEuxbA24JtjTjpfAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CoKjZ/btsrgUTGSqb/vNEcggEuxbA24JtjTjpfAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCoKjZ%2FbtsrgUTGSqb%2FvNEcggEuxbA24JtjTjpfAk%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&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;아무튼 도너츠를 퍼먹고 자고 일어나니, 밤 9시에 일어났다. 첫날 총기 자유로운 나라에 나갈 필요까진 없었다. 우버 이츠를 깔았는데 24시간을 운영하고 있었다. 물가가 한국보다야 지나치게 비쌌다만, 그래도 편리한 서비스이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미국식 팬케이크와 베이글, 소시지 세트를 우버이츠로 주문하여 배달받았다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbc3pZ/btsrgotUKNp/f1t7V2Oy0lrNob2KOUk17k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbc3pZ/btsrgotUKNp/f1t7V2Oy0lrNob2KOUk17k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbc3pZ/btsrgotUKNp/f1t7V2Oy0lrNob2KOUk17k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbbc3pZ%2FbtsrgotUKNp%2Ff1t7V2Oy0lrNob2KOUk17k%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dddi6b/btsrhG8FYRE/Ny2Be7hVfa95pzkWjV0bPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dddi6b/btsrhG8FYRE/Ny2Be7hVfa95pzkWjV0bPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dddi6b/btsrhG8FYRE/Ny2Be7hVfa95pzkWjV0bPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdddi6b%2FbtsrhG8FYRE%2FNy2Be7hVfa95pzkWjV0bPk%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;2000&quot; height=&quot;1500&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;살이 찔 수밖에 없는, 맛없게 하기 힘든 무난한 음식들이다. 고도비만으로 함께하는 여정에 한발 다가갔다. &lt;br /&gt;&lt;br /&gt;이때 찐 체중은 4개월이 지난 지금도 절대 빠지지 않는다 하더라.&lt;/p&gt;</description>
      <author> aa</author>
      <guid isPermaLink="true">https://sesang06.tistory.com/211</guid>
      <comments>https://sesang06.tistory.com/211#entry211comment</comments>
      <pubDate>Wed, 16 Aug 2023 12:22:52 +0900</pubDate>
    </item>
    <item>
      <title>Codeforces Round #763 (Div. 2) 풀이</title>
      <link>https://sesang06.tistory.com/210</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;A. &lt;a href=&quot;https://codeforces.com/contest/1623/problem/A&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://codeforces.com/contest/1623/problem/A&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1657041304376&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Problem - A - Codeforces&quot; data-og-description=&quot; &quot; data-og-host=&quot;codeforces.com&quot; data-og-source-url=&quot;https://codeforces.com/contest/1623/problem/A&quot; data-og-url=&quot;https://codeforces.com/contest/1623/problem/A&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cLEnuy/hyOZzyXuNa/DNv2TYRik0ieJEYYbP4zmK/img.png?width=555&amp;amp;height=130&amp;amp;face=0_0_555_130&quot;&gt;&lt;a href=&quot;https://codeforces.com/contest/1623/problem/A&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://codeforces.com/contest/1623/problem/A&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cLEnuy/hyOZzyXuNa/DNv2TYRik0ieJEYYbP4zmK/img.png?width=555&amp;amp;height=130&amp;amp;face=0_0_555_130');&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;Problem - A - Codeforces&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;codeforces.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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://codeforces.com/contest/1623/problem/B&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://codeforces.com/contest/1623/problem/B&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1657041331233&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Problem - B - Codeforces&quot; data-og-description=&quot; &quot; data-og-host=&quot;codeforces.com&quot; data-og-source-url=&quot;https://codeforces.com/contest/1623/problem/B&quot; data-og-url=&quot;https://codeforces.com/contest/1623/problem/B&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/CISFu/hyOZLe0HxQ/xq0HSz6LWVnamE00Eo4Qtk/img.png?width=555&amp;amp;height=130&amp;amp;face=0_0_555_130&quot;&gt;&lt;a href=&quot;https://codeforces.com/contest/1623/problem/B&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://codeforces.com/contest/1623/problem/B&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/CISFu/hyOZLe0HxQ/xq0HSz6LWVnamE00Eo4Qtk/img.png?width=555&amp;amp;height=130&amp;amp;face=0_0_555_130');&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;Problem - B - Codeforces&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;codeforces.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;span style=&quot;background-color: #ffffff; color: #222222;&quot;&gt;Alice's picked range 의 length는 1임이 자명하고,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222;&quot;&gt;맨 처음의 &lt;span style=&quot;background-color: #ffffff; color: #222222;&quot;&gt;Alice's picked range의 length는 n임이 자명합니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222;&quot;&gt;Alice's picked range의 length를&amp;nbsp; 내림차순으로 정렬하면서,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222;&quot;&gt;역순으로 맨 마지막부터 Bob's picked number을 추적해서 하나씩 구해내 리턴합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222;&quot;&gt;&lt;a href=&quot;https://codeforces.com/contest/1623/problem/C&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://codeforces.com/contest/1623/problem/C&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1657041629924&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Problem - C - Codeforces&quot; data-og-description=&quot; &quot; data-og-host=&quot;codeforces.com&quot; data-og-source-url=&quot;https://codeforces.com/contest/1623/problem/C&quot; data-og-url=&quot;https://codeforces.com/contest/1623/problem/C&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/eTTQq/hyOZBXKSBe/nWVriyQ0a0d9Y7chjmn3ak/img.png?width=555&amp;amp;height=130&amp;amp;face=0_0_555_130&quot;&gt;&lt;a href=&quot;https://codeforces.com/contest/1623/problem/C&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://codeforces.com/contest/1623/problem/C&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/eTTQq/hyOZBXKSBe/nWVriyQ0a0d9Y7chjmn3ak/img.png?width=555&amp;amp;height=130&amp;amp;face=0_0_555_130');&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;Problem - C - Codeforces&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;codeforces.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이분 탐색으로, 최소&amp;nbsp; 힙의 최대값을 k라고 둡시다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;역순으로 돌아가면,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리디하게 k개만 남기고 나머지는&amp;nbsp; 몽땅 이전거로 넘기는 것이 최선입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 역순으로 분배하고 나중에 살펴보았을 때, 모든 힙이 k개 이상의 스톤이 나오면 true를 리턴하도록&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://codeforces.com/contest/1623/problem/D&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://codeforces.com/contest/1623/problem/D&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1657041707074&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Problem - D - Codeforces&quot; data-og-description=&quot; &quot; data-og-host=&quot;codeforces.com&quot; data-og-source-url=&quot;https://codeforces.com/contest/1623/problem/D&quot; data-og-url=&quot;https://codeforces.com/contest/1623/problem/D&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/byEWu2/hyOZNKLcnA/MIZWesMUXKZfjbljLe5nV1/img.png?width=555&amp;amp;height=130&amp;amp;face=0_0_555_130&quot;&gt;&lt;a href=&quot;https://codeforces.com/contest/1623/problem/D&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://codeforces.com/contest/1623/problem/D&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/byEWu2/hyOZNKLcnA/MIZWesMUXKZfjbljLe5nV1/img.png?width=555&amp;amp;height=130&amp;amp;face=0_0_555_130');&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;Problem - D - Codeforces&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;codeforces.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로봇이 청소하는 타이밍은 주기로 구할 수&amp;nbsp; 있습니다. 그 주기는 8은 넘지 않을 것 같아요.&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;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;#include &amp;lt;vector&amp;gt;
#include &amp;lt;cmath&amp;gt;
#include &amp;lt;algorithm&amp;gt;
#include &amp;lt;climits&amp;gt;
#include &amp;lt;set&amp;gt;
#include &amp;lt;map&amp;gt;
#include &amp;lt;string&amp;gt;
#include &amp;lt;queue&amp;gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;iomanip&amp;gt;
#include &amp;lt;unordered_set&amp;gt;
#include &amp;lt;string&amp;gt;

#include &amp;lt;cmath&amp;gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;algorithm&amp;gt;
#include &amp;lt;sstream&amp;gt;
#include &amp;lt;queue&amp;gt;
#include &amp;lt;stack&amp;gt;
#include &amp;lt;bitset&amp;gt;

using namespace std;

using ld = long double;
using ll = long long;
using pldld = pair&amp;lt;ld,ld&amp;gt;;
using edge = pair&amp;lt;ld, pair&amp;lt;ll, ll&amp;gt;&amp;gt;;
using pll = pair&amp;lt;ll, ll&amp;gt;;

ll gcd(ll a, ll b) {
    if (b==0) {
        return a;
    }
    return gcd(b, a % b);
}



int main() {

#ifdef DEBUG
    freopen(&quot;../input.txt&quot;, &quot;r&quot;, stdin);
#endif

#ifndef DEBUG
    ios_base :: sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#endif

    ll t;
    cin &amp;gt;&amp;gt; t;
    while  (t--)  {
        ll n, m, r_b, c_b, r_d, c_d;
        ll  p;
        cin &amp;gt;&amp;gt; n &amp;gt;&amp;gt; m &amp;gt;&amp;gt; r_b  &amp;gt;&amp;gt; c_b &amp;gt;&amp;gt; r_d &amp;gt;&amp;gt; c_d;
        cin &amp;gt;&amp;gt; p;
        r_b --; c_b--;
        r_d--;
        c_d--;
        ll time = 0;

        ll d_x = 1;
        ll d_y = 1;

        vector&amp;lt;pair&amp;lt;ll, ll&amp;gt;&amp;gt; locations;
        vector&amp;lt;pair&amp;lt;ll, ll&amp;gt;&amp;gt; dis;
        vector&amp;lt;ll&amp;gt; times;
        ll period;
        ll period_start_index;
        bool is_finihed = true;
        while (is_finihed ) {
            if (r_b == r_d || c_b == c_d) {
                for (ll i=0; i&amp;lt;locations.size(); i++) {
                    if (locations[i] == make_pair(r_b, c_b) &amp;amp;&amp;amp;
                    dis[i] == make_pair(d_x, d_y))  {
                        period = time - times[i];
                        period_start_index = i;
                        is_finihed = false;
                        break;
                    }
                }
                if (!is_finihed) {
                    break;
                }
                locations.push_back({r_b, c_b});
                dis.push_back({d_x, d_y});
                times.push_back(time);

            }

            ll next_x = r_b + d_x;
            ll next_y = c_b + d_y;

            if (! (0 &amp;lt;= next_x &amp;amp;&amp;amp;next_x &amp;lt; n)) {
                d_x = - d_x;
                next_x = r_b + d_x;
            }
            if (! (0 &amp;lt;= next_y &amp;amp;&amp;amp; next_y &amp;lt; m)) {
                d_y = - d_y;
                next_y = c_b + d_y;
            }
            time++;
            r_b = next_x;
            c_b = next_y;
//            cout &amp;lt;&amp;lt; r_b &amp;lt;&amp;lt; ' ' &amp;lt;&amp;lt; c_b &amp;lt;&amp;lt; '\n';
        }
        cout &amp;lt;&amp;lt; period &amp;lt;&amp;lt; '\n';
    }

    return 0;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>백준</category>
      <author> aa</author>
      <guid isPermaLink="true">https://sesang06.tistory.com/210</guid>
      <comments>https://sesang06.tistory.com/210#entry210comment</comments>
      <pubDate>Wed, 6 Jul 2022 02:25:11 +0900</pubDate>
    </item>
    <item>
      <title>백준 문제 풀이</title>
      <link>https://sesang06.tistory.com/209</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/19491&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/19491&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1656949263358&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;19491번: Equation&quot; data-og-description=&quot;The first and only line of the input contains three integers of the task statement: $k, a, b$, ($1 \le k, a, b \le 10^{18}$, $a \le b$).&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/19491&quot; data-og-url=&quot;https://www.acmicpc.net/problem/19491&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cBzjwn/hyOYm7VeqZ/iBaiYKiHFR3v7eNrQKQkJK/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/19491&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/19491&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cBzjwn/hyOYm7VeqZ/iBaiYKiHFR3v7eNrQKQkJK/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;19491번: Equation&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The first and only line of the input contains three integers of the task statement: $k, a, b$, ($1 \le k, a, b \le 10^{18}$, $a \le b$).&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;n의 범위는 1~ 10^18입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;f(n)은 n의&amp;nbsp; 디짓의 스퀘어 제곱인데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디짓의 개수는 최대 19개입니다 (10^18면 공이 18개)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 디짓이 9일 때가 최대인데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그때 f(n)의&amp;nbsp; 범위는 1~81*19=2000입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;k에 대하여 f(n)의 값을 1부터 2000까지 for loop를 돌면서 모든 f(n)을 생각합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;k. * f(n)으로 n을 계산합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계산한 n을 바탕으로 다시 f(n)을 f(n)의 정의대로 역산하여,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추정한 f(n)과 진짜 f(n)이 맞을 경우만 세서 리턴합니다.&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;long long이여도 10^18이면 아슬아슬하므로, for 루프에서 k * f(n) &amp;lt;= b 조건을 추가해주어서 오버플로우를 빠져나옵니다.&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://www.acmicpc.net/problem/19488&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/19488&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1656949515794&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;19488번: Championships&quot; data-og-description=&quot;The first line of the input contains three integers $n$, $m$ and $d$ ($2\leq n\leq 200\,000$, $1\leq m\leq 200\,000$, $1\leq d &amp;lt; n$) denoting the the number of cities, the number of roads in Byteotia and the parameter $d$, respectively. Next $m$ lines desc&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/19488&quot; data-og-url=&quot;https://www.acmicpc.net/problem/19488&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/RLolE/hyOYqJfnPM/sSmAuW8DtOKgFUTKEjBBtK/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/19488&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/19488&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/RLolE/hyOYqJfnPM/sSmAuW8DtOKgFUTKEjBBtK/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;19488번: Championships&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The first line of the input contains three integers $n$, $m$ and $d$ ($2\leq n\leq 200\,000$, $1\leq m\leq 200\,000$, $1\leq d &amp;lt; n$) denoting the the number of cities, the number of roads in Byteotia and the parameter $d$, respectively. Next $m$ lines desc&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 도시의 degree가 d 미만일 경우, 애초에 이 도시는 S에 포함될 수 없습니다.&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;그럴 경우, 그래프는 모두 degree가&amp;nbsp; d보다 크거나 같은 도시들만 남게 됩니다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/24024&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/24024&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1656949622759&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;24024번: 삼색 그래프&quot; data-og-description=&quot;첫 번째 줄에 $N$, $M$, $X$가 공백을 사이에 두고 주어진다. ($1 \leq N \leq 200,000$, $N-1 \leq M \leq 200,000$, $0 \leq X \leq 10^9$) 두 번째 줄부터 $M$개의 줄에 걸쳐 $u$, $v$, $w$, $p$가 사이에 공백을 두고 주어지&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/24024&quot; data-og-url=&quot;https://www.acmicpc.net/problem/24024&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cfiRQi/hyOYnFLoVA/gUkmtiBICszTmi8YgF5X60/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480,https://scrap.kakaocdn.net/dn/9ZwI1/hyOZF5Scrn/CfdTppY10nS8QWlKIP12T0/img.png?width=2528&amp;amp;height=3072&amp;amp;face=0_0_2528_3072&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/24024&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/24024&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cfiRQi/hyOYnFLoVA/gUkmtiBICszTmi8YgF5X60/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480,https://scrap.kakaocdn.net/dn/9ZwI1/hyOZF5Scrn/CfdTppY10nS8QWlKIP12T0/img.png?width=2528&amp;amp;height=3072&amp;amp;face=0_0_2528_3072');&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;24024번: 삼색 그래프&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫 번째 줄에 $N$, $M$, $X$가 공백을 사이에 두고 주어진다. ($1 \leq N \leq 200,000$, $N-1 \leq M \leq 200,000$, $0 \leq X \leq 10^9$) 두 번째 줄부터 $M$개의 줄에 걸쳐 $u$, $v$, $w$, $p$가 사이에 공백을 두고 주어지&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래프의 일부 엣지에 가중치를 더하는 과정은,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최단 거리를 증가시키기만 하지 감소시키지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 X스푼 모두를 집어넣는 것이 최단 거리를 최대화하는 비법입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1번 정점과 2번 정점만 존재하고, 1번과 2번에 빨간색과 파란색 두 개의 엣지로 연결되었다고 해 봅시다.&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;이분 탐색으로 구할 수 없음을 추론할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;삼분 탐색을 통해 X스푼을 빨간색에 a스푼, 파란색에 X-a스푼 넣는다고 가정할 때,&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;a href=&quot;https://www.acmicpc.net/problem/19808&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/19808&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1656949866814&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;19808번: Guess the Path&quot; data-og-description=&quot;First your program receives two integers $m$ and $n$ --- the size of the field for the robot ($1 \le m, n \le 1000$, $m + n &amp;gt; 2$). After that your program must make queries, each query represents one launch of the robot. To make a query output &amp;quot;? $s$&amp;quot;, whe&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/19808&quot; data-og-url=&quot;https://www.acmicpc.net/problem/19808&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bZuica/hyOYe9YkOZ/kUSwkLjCbKLXJTzgXkKbik/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480,https://scrap.kakaocdn.net/dn/etSMj0/hyOZADwAqK/8yqgk2pHKPrFvkmXoBwbx0/img.jpg?width=896&amp;amp;height=436&amp;amp;face=0_0_896_436,https://scrap.kakaocdn.net/dn/cMdkDe/hyOZOoeur7/HRqltUlNe3AzJVeKGG5ve1/img.jpg?width=874&amp;amp;height=424&amp;amp;face=0_0_874_424&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/19808&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/19808&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bZuica/hyOYe9YkOZ/kUSwkLjCbKLXJTzgXkKbik/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480,https://scrap.kakaocdn.net/dn/etSMj0/hyOZADwAqK/8yqgk2pHKPrFvkmXoBwbx0/img.jpg?width=896&amp;amp;height=436&amp;amp;face=0_0_896_436,https://scrap.kakaocdn.net/dn/cMdkDe/hyOZOoeur7/HRqltUlNe3AzJVeKGG5ve1/img.jpg?width=874&amp;amp;height=424&amp;amp;face=0_0_874_424');&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;19808번: Guess the Path&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;First your program receives two integers $m$ and $n$ --- the size of the field for the robot ($1 \le m, n \le 1000$, $m + n &amp;gt; 2$). After that your program must make queries, each query represents one launch of the robot. To make a query output &quot;? $s$&quot;, whe&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;풀지 못했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무작위로 대충 경로를 풀고 나오는 답을 대조하면&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[진짜 경로] [가짜 경로] 일 때,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[진짜 경로] [가짜 경로]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[진짜 경로]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;를 추론할 수가 있습니다 (R으로 못가니 반드시 D로 가야 함)&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;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &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;이를 이용해서 가능한 추론해 가는 방식으로&amp;nbsp; 짰는데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;10회 이내로&amp;nbsp; 못 구하나 봅니다; 아니면 버그가 있던가..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;http://boj.kr/3f549fd5bbb141ad9efdcf9c04ec0382&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://boj.kr/3f549fd5bbb141ad9efdcf9c04ec0382&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1656950030965&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;공유 소스 보기&quot; data-og-description=&quot;#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ld = long double; using ll = long long; using pld&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;http://boj.kr/3f549fd5bbb141ad9efdcf9c04ec0382&quot; data-og-url=&quot;https://www.acmicpc.net/source/share/3f549fd5bbb141ad9efdcf9c04ec0382&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/UeN09/hyOYg7KwRj/sixTqkwKTDa2tUl8r8wKC0/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;http://boj.kr/3f549fd5bbb141ad9efdcf9c04ec0382&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://boj.kr/3f549fd5bbb141ad9efdcf9c04ec0382&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/UeN09/hyOYg7KwRj/sixTqkwKTDa2tUl8r8wKC0/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;공유 소스 보기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ld = long double; using ll = long long; using pld&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;틀린 코드 좀 봐야할 듯.&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;a href=&quot;https://www.acmicpc.net/problem/7981&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/7981&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1656950061508&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;7981번: 장비를 정지합니다&quot; data-og-description=&quot;졸업논문을 완성하지 못한 형서는 학교에 대한 테러 계획을 세웠다. 고급정보과학 시간에 몰래 형서가 제작한 기계는, 전원을 켠 순간부터 폭주하기 시작해서 온 학교를 쑥대밭으로 만들고 있&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/7981&quot; data-og-url=&quot;https://www.acmicpc.net/problem/7981&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/wwlQT/hyOYqCusrj/hh5Kpd6IQ7GDlK7t6V6WDK/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/7981&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/7981&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/wwlQT/hyOYqCusrj/hh5Kpd6IQ7GDlK7t6V6WDK/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;7981번: 장비를 정지합니다&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;졸업논문을 완성하지 못한 형서는 학교에 대한 테러 계획을 세웠다. 고급정보과학 시간에 몰래 형서가 제작한 기계는, 전원을 켠 순간부터 폭주하기 시작해서 온 학교를 쑥대밭으로 만들고 있&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음엔 dp[i] = i번 장비를 정지하는 데 걸리는 최소 와트 로 정의합시다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;직관적으로 보았을 때 dp[i] = zi (강한 충격으로 정지했을 때) 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 dp[i] = wi + dp[gi,1] +... + dp[gi,&amp;nbsp; ri] (약한 충격으로 정지했을 때) 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최초에는 모든 dp[i] = zi 로 둡니다. 이는 최소 전력입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버퍼를 하나 더 두는데, weak_dp[i] = wi &amp;nbsp;+ dp[gi,1] +... + dp[gi,&amp;nbsp; ri]&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로 둡니다. 이는 약한 충격으로 i를 정지시킬 때 최소 전력입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;weak_dp[i]가 dp[i] 보다 작아지는 경우,&amp;nbsp; (weak_dp[i], i) 를 큐에 넣습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;큐를 빼면서 dp[i]를 weak_dp[i] 만큼 갱신하고,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;i가 이 relaxation으로 얼마만큼 전력량이 최소화되나 diff를 구합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이&amp;nbsp; diff만큼 다른 weak_dp[j] = wj + dp[gi, 1] + ... dp[i] + dp[gj,&amp;nbsp; rj]&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(약한 충격으로 닫을 때 i도 닫아야 하는 j) 도 값이 줄어드니, 갱신됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;갱신된 값이 dp[j]보다&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;이런 변형된 다익스트라를 반복시킨 후, dp[1]을 리턴합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/17154&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/17154&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1656950379623&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;17154번: Dead-End Detector&quot; data-og-description=&quot;On the first line, output k, the number of dead-end signs installed. On each of the next k lines, output two integers v and w marking that a dead-end sign should be installed at the v-entrance of a street connecting locations v and w. The lines describing &quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/17154&quot; data-og-url=&quot;https://www.acmicpc.net/problem/17154&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ceowwd/hyOYh6BLDO/hggdumPsSdIvbcu5rv3JlK/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480,https://scrap.kakaocdn.net/dn/CrhxU/hyOZAcrCsS/77gYG9lJE4JXdFkUjlK4T0/img.png?width=376&amp;amp;height=340&amp;amp;face=0_0_376_340,https://scrap.kakaocdn.net/dn/dcilsL/hyOYkWy31X/7MZg17L1eTiYDWo8CFrIH0/img.png?width=388&amp;amp;height=304&amp;amp;face=0_0_388_304&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/17154&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/17154&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ceowwd/hyOYh6BLDO/hggdumPsSdIvbcu5rv3JlK/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480,https://scrap.kakaocdn.net/dn/CrhxU/hyOZAcrCsS/77gYG9lJE4JXdFkUjlK4T0/img.png?width=376&amp;amp;height=340&amp;amp;face=0_0_376_340,https://scrap.kakaocdn.net/dn/dcilsL/hyOYkWy31X/7MZg17L1eTiYDWo8CFrIH0/img.png?width=388&amp;amp;height=304&amp;amp;face=0_0_388_304');&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;17154번: Dead-End Detector&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;On the first line, output k, the number of dead-end signs installed. On each of the next k lines, output two integers v and w marking that a dead-end sign should be installed at the v-entrance of a street connecting locations v and w. The lines describing&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 꼴이 트리일 경우,&amp;nbsp; 리프의 개수가 dead-end-detector입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 안에 사이클이 있을 경우,&amp;nbsp; 사이클에 붙은 트리들의 root의 개수가 dead-end-detector입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2를 구하기 위해서, 그래프를 vector&amp;lt;set&amp;lt;&amp;gt;&amp;gt; 으로 선언하고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; degree가 1인 vertex들을 하나씩 반복적으로 떼어냅니다.&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;1번 경우는 따로 포레스트를 flood-fill로 떼서 리턴합니다.&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://www.acmicpc.net/problem/16183&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/16183&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1656950530146&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;16183번: Electronic Circuit&quot; data-og-description=&quot;The first line contains two integers, $n$ and $m$ ($2\leq n\leq 100,000$, $1\leq m\leq 300,000$), where $n$ is the number of nodes and $m$ is the number of wires. All nodes are numbered from $1$ to $n$. In the following $m$ lines, each line contains two in&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/16183&quot; data-og-url=&quot;https://www.acmicpc.net/problem/16183&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/kUqGI/hyOYuycSpK/Yy64f87kyxy8FPv1rR8pt1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480,https://scrap.kakaocdn.net/dn/loyN2/hyOZOIxs7A/k8uNALaB0yvKHnPs6AF1c0/img.png?width=958&amp;amp;height=379&amp;amp;face=0_0_958_379&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/16183&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/16183&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/kUqGI/hyOYuycSpK/Yy64f87kyxy8FPv1rR8pt1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480,https://scrap.kakaocdn.net/dn/loyN2/hyOZOIxs7A/k8uNALaB0yvKHnPs6AF1c0/img.png?width=958&amp;amp;height=379&amp;amp;face=0_0_958_379');&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;16183번: Electronic Circuit&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The first line contains two integers, $n$ and $m$ ($2\leq n\leq 100,000$, $1\leq m\leq 300,000$), where $n$ is the number of nodes and $m$ is the number of wires. All nodes are numbered from $1$ to $n$. In the following $m$ lines, each line contains two in&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래프가 나이스&amp;nbsp; 서킷인 경우,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최소한 한 엣지가 초단순 직렬이거나 병렬일 수밖에 없습니다. base case입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 base case를&amp;nbsp; 지워나가며 남는 게 한 엣지면 nice circuit입니다.&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; 그래프를 vector&amp;lt;set&amp;lt;&amp;gt;&amp;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; 중간 노드의&amp;nbsp; degree는&amp;nbsp; 2입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 중간 노드를 모조리 찾아내어 제거하고, 양 노드를 잇는 새로운 엣지를 그으면&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;직렬을 단순화할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 반복적으로 하여 답을 구해냅니다.&lt;/p&gt;</description>
      <category>백준</category>
      <author> aa</author>
      <guid isPermaLink="true">https://sesang06.tistory.com/209</guid>
      <comments>https://sesang06.tistory.com/209#entry209comment</comments>
      <pubDate>Tue, 5 Jul 2022 01:08:53 +0900</pubDate>
    </item>
    <item>
      <title>엣코더 ARC 142 풀이</title>
      <link>https://sesang06.tistory.com/208</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://atcoder.jp/contests/arc142/tasks/arc142_a&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://atcoder.jp/contests/arc142/tasks/arc142_a&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1656419031864&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;A - Reverse and Minimize&quot; data-og-description=&quot;AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.&quot; data-og-host=&quot;atcoder.jp&quot; data-og-source-url=&quot;https://atcoder.jp/contests/arc142/tasks/arc142_a&quot; data-og-url=&quot;https://atcoder.jp/contests/arc142/tasks/arc142_a&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dC3ftO/hyOUZYR1fg/qt4m3E5ebtCKghFm9JqJ61/img.png?width=280&amp;amp;height=280&amp;amp;face=0_0_280_280&quot;&gt;&lt;a href=&quot;https://atcoder.jp/contests/arc142/tasks/arc142_a&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://atcoder.jp/contests/arc142/tasks/arc142_a&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dC3ftO/hyOUZYR1fg/qt4m3E5ebtCKghFm9JqJ61/img.png?width=280&amp;amp;height=280&amp;amp;face=0_0_280_280');&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;A - Reverse and Minimize&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;atcoder.jp&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;K를 리버스한 것이 K보다 작으면,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;K는 애초에 f(x)의&amp;nbsp; 값이 될 수 없으니 0을 리턴합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;K와 reverse(K)에 10배씩 곱하며&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N보다 작을 경우엔 값을 추가합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;K=reverse(K)인 예외에 주의합니다.&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://atcoder.jp/contests/arc142/tasks/arc142_b&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://atcoder.jp/contests/arc142/tasks/arc142_b&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1656419267584&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;B - Unbalanced Squares&quot; data-og-description=&quot;AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.&quot; data-og-host=&quot;atcoder.jp&quot; data-og-source-url=&quot;https://atcoder.jp/contests/arc142/tasks/arc142_b&quot; data-og-url=&quot;https://atcoder.jp/contests/arc142/tasks/arc142_b&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/fy22U/hyOU3fT60I/Qu1selKNRqdv1OUPAKVggK/img.png?width=280&amp;amp;height=280&amp;amp;face=0_0_280_280&quot;&gt;&lt;a href=&quot;https://atcoder.jp/contests/arc142/tasks/arc142_b&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://atcoder.jp/contests/arc142/tasks/arc142_b&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/fy22U/hyOU3fT60I/Qu1selKNRqdv1OUPAKVggK/img.png?width=280&amp;amp;height=280&amp;amp;face=0_0_280_280');&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;B - Unbalanced Squares&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;atcoder.jp&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;백색 -&amp;gt; 작은 수부터 차례대로 채우기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;흑색 -&amp;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;왜 그런지는 증명... 을 해봐야 알 것 같습니다만.. 값을 완전히 나누어서 뿌리니 불균형이 일어나서 조금씩 최대값과&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;a href=&quot;https://atcoder.jp/contests/arc142/tasks/arc142_c&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://atcoder.jp/contests/arc142/tasks/arc142_c&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1656419559527&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;C - Tree Queries&quot; data-og-description=&quot;AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.&quot; data-og-host=&quot;atcoder.jp&quot; data-og-source-url=&quot;https://atcoder.jp/contests/arc142/tasks/arc142_c&quot; data-og-url=&quot;https://atcoder.jp/contests/arc142/tasks/arc142_c&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/biQEpM/hyOV3rPbRW/LzJbNv7mwPv6Bunhp0uko1/img.png?width=280&amp;amp;height=280&amp;amp;face=0_0_280_280,https://scrap.kakaocdn.net/dn/cCVpXu/hyOU0jbye4/BoaaXpnOB05ye9c8Gmo7jK/img.png?width=400&amp;amp;height=200&amp;amp;face=0_0_400_200,https://scrap.kakaocdn.net/dn/bg1rxy/hyOU0Q0Wx7/VmMm0OBzIYVsJaJyYHqkIK/img.png?width=400&amp;amp;height=200&amp;amp;face=0_0_400_200&quot;&gt;&lt;a href=&quot;https://atcoder.jp/contests/arc142/tasks/arc142_c&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://atcoder.jp/contests/arc142/tasks/arc142_c&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/biQEpM/hyOV3rPbRW/LzJbNv7mwPv6Bunhp0uko1/img.png?width=280&amp;amp;height=280&amp;amp;face=0_0_280_280,https://scrap.kakaocdn.net/dn/cCVpXu/hyOU0jbye4/BoaaXpnOB05ye9c8Gmo7jK/img.png?width=400&amp;amp;height=200&amp;amp;face=0_0_400_200,https://scrap.kakaocdn.net/dn/bg1rxy/hyOU0Q0Wx7/VmMm0OBzIYVsJaJyYHqkIK/img.png?width=400&amp;amp;height=200&amp;amp;face=0_0_400_200');&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;C - Tree Queries&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;atcoder.jp&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1번 인덱스에서 2를 제외한 다른 모든 인덱스까지의 거리를 일단 쿼리합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마찬가지로 2번 인덱스에서 1을 제외한 다른 모든 인덱스까지의 거리를 쿼리합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주어진 것은 트리이므로, 1과 2를 펴면 직선으로 볼 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 1과 2 사이에 노드가 있는 경우, 1 - 노드 - 2 가 곧 거리입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러므로 구했던 거리들을 각각 노드별로 더한 다음, 최소값을 구하면 일반적으로 궈리입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 예외는, 1과 2 사이에 노드가 없는 경우입니다. 이러면 최소값이 3이 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 1과 2 사이에 노드가 2개 있을 때와 구분하기 어렵기 때문에 추가적으로 쿼리해 주어야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1과 2 사이에 노드가 2개 있으면, 그 노드들의 최소값은 모두 3입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 노드 사이의 거리를 쿼리한 후, 1이 나오면 1과 2 사이에 노드가 2개 있는 것이므로, 3을 리턴합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇지 않으면, 1을 리턴합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;D, E, F는 풀지 못해 이후 풀이를 작성할 예정입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>백준</category>
      <author> aa</author>
      <guid isPermaLink="true">https://sesang06.tistory.com/208</guid>
      <comments>https://sesang06.tistory.com/208#entry208comment</comments>
      <pubDate>Tue, 28 Jun 2022 21:39:30 +0900</pubDate>
    </item>
  </channel>
</rss>