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 |
Tags
- 보코더
- 딥러닝 음성 합성
- tacotron
- YOLO
- 딥러닝
- 트레이닝
- singing voice synthesis
- text-to-speech
- deep voice
- 학습
- TTS
- korean tts
- 한국어 음성 합성
- 딥러닝 보코더
- 윈도우
- 노래합성
- DCTTS
- melgan
- 음성 합성
- 한국어 tts
- you only look once
- 타코트론
- waveglow
- Vocoder
Archives
- Today
- Total
chldkato
백준 23288 주사위 굴리기 2 (파이썬) 본문
https://www.acmicpc.net/problem/23288
1. dx, dy는 동남서북 순으로 이동하도록 만든다
2. 1~6 을 갖는 주사위 리스트 dice를 만든다
3. 문제 조건대로 이동을 시작한다
이동 방향 변수인 dir은 동쪽에 해당하는 0을 초기값으로 한다.
4. 만약 다음칸이 이동 가능한 범위를 벗어나면, dir을 (dir + 2) % 4로 반대 방향으로 바꿔준다
5. bfs로 연속으로 이동할 수 있는만큼 이동하고, 이동한 칸을 cnt로 return 한다
6. 최종 출력이 되는 ans에 (bfs 출력값 + 1) * 현재 좌표 값을 더해준다. (맨 처음칸을 포함해야해서 bfs + 1)
7. 이동 방향에 맞춰서 주사위 값을 바꿔준다
8. 주사위 아랫면과 해당 칸의 값을 비교해서 조건대로 방향을 바꿔준다.
import sys
from collections import deque
input = sys.stdin.readline
dx = [0, 1, 0, -1]
dy = [1, 0, -1, 0]
def bfs(x, y, k):
c[x][y] = 1
q.append([x, y])
cnt = 0
while q:
x, y = q.popleft()
for i in range(4):
nx, ny = x + dx[i], y + dy[i]
if 0 <= nx < n and 0 <= ny < m:
if c[nx][ny] == 0 and a[nx][ny] == k:
cnt += 1
c[nx][ny] = 1
q.append([nx, ny])
return cnt
n, m, k = map(int, input().split())
a = [list(map(int, input().split())) for _ in range(n)]
dice = [1, 2, 3, 4, 5, 6]
x, y, dir, ans = 0, 0, 0, 0
for _ in range(k):
if not 0 <= x + dx[dir] < n or not 0 <= y + dy[dir] < m:
dir = (dir + 2) % 4
x, y = x + dx[dir], y + dy[dir]
q = deque()
c = [[0] * m for _ in range(n)]
ans += (bfs(x, y, a[x][y]) + 1) * a[x][y]
if dir == 0:
dice[0], dice[2], dice[3], dice[5] = dice[3], dice[0], dice[5], dice[2]
elif dir == 1:
dice[0], dice[1], dice[4], dice[5] = dice[1], dice[5], dice[0], dice[4]
elif dir == 2:
dice[0], dice[2], dice[3], dice[5] = dice[2], dice[5], dice[0], dice[3]
else:
dice[0], dice[1], dice[4], dice[5] = dice[4], dice[0], dice[5], dice[1]
if dice[5] > a[x][y]:
dir = (dir + 1) % 4
elif dice[5] < a[x][y]:
dir = (dir + 3) % 4
print(ans)
'백준' 카테고리의 다른 글
백준 23290 마법사 상어와 복제 (파이썬) (0) | 2021.11.09 |
---|---|
백준 23289 온풍기 안녕! (파이썬) (0) | 2021.11.06 |
백준 20061 모노미노도미노 2 (파이썬) (0) | 2021.05.26 |
백준 21611 마법사 상어와 블리자드 (파이썬) (0) | 2021.05.18 |
백준 21610 마법사 상어와 비바라기 (파이썬) (0) | 2021.05.18 |
Comments