def solution(n):
answer = [[0]*n for i in range(n)]
x, y = 0, 0
move_state = 0#right==0, down = 1, left=2, up=3
for i in range(1,(n*n)+1):
answer[y][x] = i
if move_state == 0: x+=1
elif move_state == 1: y+=1
elif move_state == 2: x-=1
elif move_state == 3: y-=1
if (move_state==0 and (x+1 >= n or answer[y][x+1]!=0)) or (move_state==1 and (y+1 >= n or answer[y+1][x]!=0)) or (move_state==2 and (x-1 < 0 or answer[y][x-1]!=0)) or (move_state==3 and (y-1 < 0 or answer[y-1][x]!=0)):
move_state =(move_state+1)%4
return answer
1. 국제운전면허증->캐나다(알버타) 운전면허증 변경에 필요한 서류(등록소에서 신청가능) - 운전면허증명서(영문, 민원24에서 발행가능) - 한국운전면허증 - 국제운전면허증(발행: 가까운 경찰서) - 비자서류(이민국에서 발급 받은 종이) - 여권 - 캐나다 주소확인 서류(전기료, 집보험, 휴대폰 고지서등 캐나다 집 주소에 살고 있다는 확인이 가능한 서류) * 추가사항: 변경시 한국운전면허증과 국제운전면허증을 회수함 (약 2~3주 후에 면허증이 주소지로 발송될것이라 설명한 듯 함..;;;;) (시간오래 걸림, 본인, 와이프 하는데 약 1.5시간 소요됨 ;;;;;) * 종이로된 임시운전면허증 발급
2. 자동차보험(Allstate 보험가입)(한국운전경력을 인정해주기 때문에 경력증명하면 할인 됨) - 캐나다운정면허증(또는 캐나다임시운전명허증)(국제운전면허증도 가능하나 보험료 비싸짐) - bill of sale(판매증서, 자동차 판매와함께 작성하면 됨) - 운전면허증명서(영문, 민원24에서 발행가능, 운전경력확인용-보험료 할인을 위해 꼭 필요함) - 무사고증명서(영문, 보험료 할인을 위해 꼭 필요함, 한국보험사에 요청하면 보내줌) * 추가사항: 보험매니저분께서 Allstate만 한국운전경력을 인정해준다고 함(사실확인 필요함)
3. 자동차등록 필요서류(등록소에서 신청가능) - bill of sale(판매증서, 주에서 발행된 양식으로 작성). - 자동차보험증서(VIN 번호, 기간, 자동차모델등의 정보가 있는 보험사에서 보내준 서류, 종이로 가져갈 필요는 없음(스마트폰 화면으로 보여주기만 해도 됨), 보험가입여부 확인만 함) - 여권 - 캐나다운정면허증(또는 캐나다임시운전명허증) * 추가사항: 자동차등록은 보험실행일(보험가입다음날0시01분)부터 가능하기 때문에 하루에 보험가입 및 자동차등록(다음날 다시 등록소에서 신청)이 불가능함
- 가장 먼저 해야되는 부분이다. 특히 자녀를 캐나다 무상교육을 하루 빨리 받게 하기 위해서는 캐나다 내에서 주소는 필수다. 한국에서 미리 계약을 해서 입국후 바로 거주하면 좋겠지만 그것이 아니면 최대한 빨리 구하는 것이 나머지 해야될 일들??을 빠르게 처리할 수 있다. (저는 입국전 한국에서 미리 렌트를 하였으며, 입국 후 바로 렌트 집에 거주 하였습니다.)
(1) 자신이 살고자 하는 동네 후보지를 먼저 선정합니다. 특히 저학년 자녀 학교를 생각하는 부모들은 각 지역에 대한 사전 조사 후 선정을 합니다. 여러 유튜브 및 블로그를 보시면 선호지역과 분위기를 알 수 있습니다.
(2) rentfaster 사이트에 렌탈 신청서 작성 항목이 있습니다. 자신에 대해서 작성하는 내용으로 그곳에서 지낼 가족수, 나이, 기간 등을 작성하면 됩니다. 이걸 왜 작성해야 되냐면 ;;; 한국과 다르게 여기에는 여러사람의 신청서를 받아서 그중에서 선정하는 방식입니다. 제가 왔던 시기와 다르게 지금은 렌탈 집이 거의 없는 상황이라 매우 경쟁이 치열한 상황이라고 합니다. 최대한 자신이 집 을 잘 쓴다는 내용이 좀 어필이 되어야 될 듯합니다.
저는 소개서에 아래와 같이 작성하였습니다. 나의 직접, 여기에 온 목적, 지낼 가족들에 대해서 작성함
I am 이름, working at 직장. I will soon visit 캘거리방문기관 as a 방문목적 and be there for 기간. My family consists of 가족수. So, I am looking for a rental house to stay with my family. My xxxx is xx years old(자녀 성별 및 나이).
신청서 작성시 중요한 점은 신분이 확신한 사람이라는 것이 중요합니다. 이유는 집주인 입장에서 월세를 절대 안 미루고 잘 낼 수 있는 사람을 찾고 싶어하기 때문입니다.
(3) 다음으로 선정된 후보지역 내에 적당한 집 가격, 학교와의 거리, 방 수 등을 확인합니다.
이때 한국과 차이점은 아파트나 콘도 등은 렌트비에 전기, 수도, 가스 등의 비용이 포함되어 있는 경우가 많으니 이 부분을 감안하여 가격을 확인하기 바랍니다. 저도 아파트에 사는데 전기료만 제가 지불하고 나머지는 포함입니다.
(예: Utilities Included:Heat•Water (난방비와 물비용이 포함되어 있다는 말입니다.))
(4) 집주인에게 메시지 보내기.
먼저 말씀 드리는 것은 정말 아니다 라고 생각하는 집아니면 무조건 렌탈 요청 메시지를 보내야 합니다. 처음에 어떻게 메시지를 보내야 되나 많이 망설여 지는데..(저도 역시 그랬습니다.^^;;특히 영어라..). 메시지를 보내도 응답이 없을 경우도 많고 여러 신청자중에 경쟁후 집주인 선택 방법이기 때문에 자신이 선택될 확률이 적을 수 있습니다. 그래서 일단 다 보내고 응답이 오는 순으로 대응을 하기 바랍니다.
메시지 보내는 방법은 집을 선택하면 아래와 같은 창이 나타나는데 오른 편 아래에 메시지 보내는 창이 있습니다.
(이때 send my rental application 을 체크하기 바랍니다.)
제가 작성한 포맷은 다음과 같습니다.(메시지를 보내면 집주인은 미리 작성된 렌탈 신청서도 볼 수 있습니다.)
Hello, I am looking for a house to stay for a year. When I see the pictures of your rental house, the house is very clean and nice. And I think the location of the house is so perfect for my family. You can see the information about me in Rental Application. Please email me if I can see the house. We sincerely hope to stay in your rental house in Calgary.
(5) 주고 받은 메시지 확인하기: 아래 화면과 같이 오른쪽 위에 보시면 Inbox 라는 메뉴가 있는데 메뉴를 클릭하면 메시지 확인 창을 볼 수 있습니다.
아래는 제가 신청한 렌탈 집입니다. 아래와 같이 10개 넘게 보냈는데, 반 정도만 메시지가 왔습니다.
(6) 집주인이 신청자가 마음에 듣다고 생각하면 신분확인 및 월세를 잘 낼 수 있다는 즉 수입 증명 위한 서류를 요청합니다(이건 집주인 마다 다를것 같아요). 저의 경우 재직증명서, 소득증명서도 보내줬습니다. 그리고 나중에는 화상으로 가족 모두 얼굴 확인을 하였습니다. 제가 외국인 신분이고 월세 문제가 발생하지 않기 위해 확인하는 듯 합니다.
(7) 모든 확인 절차가 끝나고 렌탈해주기로 확정후 계약서를 작성하였습니다. 계약에서 1달 렌탈비를 우리나라로 치면 보증금? 형식으로 달라고 해서 ok 했습니다. (집주인 생각에 신분이 불안정할 수 록 보증금이 올라갈 듯 합니다.)
다음에 문제가 발생했는데. 집주인이 보증금과 첫달 렌트비를 e-transfer로 돈을 보내달라고 합니다.... 그게 먼가.???
e-transfer에 대해서 간단히 말하면 은행계좌로 등록된 이메일 주소로 돈을 보낼 수 있는 것입니다. 우리나라로 보면 요즘 전화번호만으로 돈을 이체해주는 방법과 유사하다고 보면 됩니다. 근데 문제는 한국에서는 e-transfer가 불가능하다는 것입니다. 그래서 사전에 미리 집주인에게 e-transfer 는 한국에서 불가능하니 보증금+첫달렌트비을 해외 송금으로 하겠다. 말하는 것이 좋을 듯 합니다.
이때 사실 세입자? 입장에서도 부동산?? 이 중개하는 것도 아니니 돈을 미리 보내는 것이 맞는지도 사실 좀 불안합니다. 저의 경우 지인이 미리 집을 보고 그 과정에서 집주인과 몇번 만나서 확신을 가지고 진행을 했는데 이건 개인마다 차이가 있으니 각자의 상황에 맞게 진행하기 바랍니다.
2. 각 지점에 상담예약을 선택하면 아래와 같이 언어 선택 메뉴가 나타난다(지점마다 다름). 한국어 상담이 가능한 지점으로 선택
3. 한국 계좌와 차이점(직접 가서 상담받으면서 그 차이점을 알 수 있으며 그래서 생각보다 시간이 오래걸려요.^^;;. 아래는 상담받은 내용을 요약한 내용입니다. 참고만 하기 바랍니다.)
- 한국은 계좌 유지 비용이 없지만 캐나다에는 있다. 그리고 대부분의 캐나다 은행에서 새로 방문한(뉴커머) 사람에게 1년 동안 계좌유지 비용을 면제하는 프로모션을 진행하는 듯하다.
- 하나의 계좌에 서로 다른 사람(가족) 명의 체크(debit) 카드를 만들 수 있다.(가족이 함께 있으면 편의를 위해 2개 만드는 것이 좋다)
- 계좌의 종류가 크게 chequing account, savings account 두개가 있으며, 내가 알기로는 chequing 은 자동이체, 체크 카드 연결을 쓰며, savings 는 우리나라로 치면 자유입출금 적금통장? 같은 느낌이인데 정확하지는 않음. savings 가 정말 약간 예금 이자가 높은 듯함.
- 현금 프로모션: 이건 그때 그때 다른듯한데 얼마 이상 몇달동안 자동이체, 한번에 얼마이상 이체한 실적이 있고 등 몇 가지 조건을 수행하면 계좌로 현금이 지급되는 프로모션이 있었다. 생각보다 금액이 크니, 꼭 확인하기 바랍니다.
import speech_recognition as sr
import pyttsx3
import openai
openai.api_key = "openai key"
# Initialize the recognizer
r = sr.Recognizer()
# Initialize the voice engine
voice_engine = pyttsx3.init()
#스피치 목소리 타입 0: K, 1: female, 2: male
voices = voice_engine.getProperty('voices')
voice_engine.setProperty('voice', voices[0].id)
voice_engine.setProperty('rate', 170)
# Function to convert text to speech
def SpeakText(user_text,command):
#음성 파일 저장
voice_engine.save_to_file(command, '/answer.mp3')
#TTS 실행
voice_engine.say(command)
voice_engine.runAndWait()
def main():
# 무한
with sr.Microphone() as source:
r.adjust_for_ambient_noise(source, duration=0.2)
while True:
try:
print('listen...')
#listens for the user's input
user_audio = r.listen(source)
# Using google to recognize audio
user_text = r.recognize_google(user_audio)
user_text = user_text.lower()
print("Did you say: ",user_text)
completion = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": user_text}
]
)
#chatgpt 결과 출력
print(completion.choices[0].message.content)
SpeakText(user_text,completion.choices[0].message.content)
except sr.RequestError as e:
print("Could not request results; {0}".format(e))
except sr.UnknownValueError:
print("unknown error occurred")
if __name__ == "__main__":
main()