Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 학습
- TTS
- 딥러닝 음성 합성
- 음성 합성
- tacotron
- 딥러닝 보코더
- korean tts
- deep voice
- 노래합성
- text-to-speech
- melgan
- 딥러닝
- you only look once
- 보코더
- waveglow
- 타코트론
- 한국어 tts
- DCTTS
- 윈도우
- 트레이닝
- YOLO
- 한국어 음성 합성
- Vocoder
- singing voice synthesis
Archives
- Today
- Total
chldkato
프로그래머스 방의 개수 (파이썬) 본문
https://programmers.co.kr/learn/courses/30/lessons/49190
1. 방문한 좌표와 이동경로를 key로 하는 dict를 2개 만들고 방문하면 1로 저장한다
2. 왔던 경로를 반대로 돌아가는 경로를 고려하여 경로를 저장하는 dir에 반대방향으로 이동하는 경로도 체크
3. X 자로 교차하여 방을 만드는 경우를 고려하여 한번 이동할때 2칸씩 이동
이렇게 하면 X자로 교차되는 지점의 좌표를 지정할 수 있다
4. 다음 좌표가 이전에 방문한 적이 있고 이동한 적 없는 경로라면 방을 만들게 되므로 방의 개수를 증가
5. 그 외의 경우에는 좌표를 방문했음을 체크하고 경로도 체크
from collections import deque
dx = [-1, -1, 0, 1, 1, 1, 0, -1]
dy = [0, 1, 1, 1, 0, -1, -1, -1]
def solution(arrows):
cnt, dir, q = {}, {}, deque()
cnt[(0, 0)] = 0
q.append([0, 0])
x, y, ans = 0, 0, 0
for i in arrows:
for j in range(2):
nx = x + dx[i]
ny = y + dy[i]
cnt[(nx, ny)] = 0
dir[(x, y, nx, ny)] = 0
dir[(nx, ny, x, y)] = 0
q.append([nx, ny])
x, y = nx, ny
x, y = q.popleft()
cnt[(x, y)] = 1
while q:
nx, ny = q.popleft()
if cnt[(nx, ny)] == 1:
if dir[(x, y, nx, ny)] == 0:
ans += 1
dir[(x, y, nx, ny)] = 1
dir[(nx, ny, x, y)] = 1
else:
cnt[(nx, ny)] = 1
dir[(x, y, nx, ny)] = 1
dir[(nx, ny, x, y)] = 1
x, y = nx, ny
return ans
'프로그래머스' 카테고리의 다른 글
프로그래머스 [1차] 비밀지도 (파이썬) (0) | 2020.03.03 |
---|---|
프로그래머스 종이접기 (파이썬) (0) | 2020.03.03 |
프로그래머스 블록 이동하기 (파이썬) (0) | 2020.02.29 |
Comments