일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 수식 최대화
- 16234번
- 17144번
- python
- 12869번
- 빛의 경로 사이클
- 12865번
- SW Expert Academy
- 15686번
- 프로그래머스
- 9095번
- QueryDSL 기초
- 보석 쇼핑
- 1038번
- 스타트 택시
- 2020 카카오 인턴십
- 1789번
- 파이썬
- 미세먼지 안녕!
- 19238번
- SW ExpertAcademy
- 키패드 누르기
- 거울 설치
- 감소하는 수
- HTML 기초
- 어른 상어
- 백준 알고리즘
- 경주로 건설
- 14499번
- 베스트엘범
Archives
- Today
- Total
보물창고 블로그
백준 알고리즘 17825번 주사위 윷놀이 풀이 With Python 본문
728x90
문제 링크: https://www.acmicpc.net/problem/17825
문제는 아래와 같습니다.
막상 문제를 구현하려고 하였을 때 어떻게 해야 할지 막막하였다. 결국 다른 사람들의 풀이를 보았고, 윷놀이 판을 리스트로 구현하였다. 상당히 애를 먹었던 문제다. 풀이는 아래와 같다. DFS(깊이 우선 탐색)을 사용하였고, 백 트레킹을 하여 9번째 주사위에서 현재의 정답에 40을 더한 값보다 작으면 종료시켜서 불필요한 연산을 줄이려고 노력하였다.
import sys
def solution(count, sub, position):
global answer
if count == 9 and answer != 0:
if sub + 40 < answer:
return
elif count == 10:
if answer < sub:
answer = sub
return
for i in range(4):
x, y = position[i]
if x == 4 and y == 4:
continue
nx, ny = position[i]
if x == 0:
if y == 5:
nx = 1
ny = -1
elif y == 10:
nx = 2
ny = -1
elif y == 15:
nx = 3
ny = -1
elif y == 20:
nx = 4
ny = 3
ny += dices[count]
if nx == 0 and ny >= 20:
nx = 4
if ny == 20:
ny = 3
else:
ny = 4
elif 0 < nx < 4 and ny > len(map1[nx]) - 1:
ny -= len(map1[nx])
nx = 4
elif nx == 4 and ny > 4:
ny = 4
if map1[nx][ny] != 0 and [nx, ny] in position:
continue
position[i] = [nx, ny]
solution(count + 1, sub + map1[nx][ny], position)
position[i] = [x, y]
answer = 0
dices = list(map(int, sys.stdin.readline().split()))
map1 = [
[],
[13, 16, 19],
[22, 24],
[28, 27, 26],
[25, 30, 35, 40, 0]
]
for i in range(21):
map1[0].append(2 * i)
stack = [[0, 0, [[0, 0] for _ in range(4)], [0] * 4]]
solution(0, 0, [[0, 0] for _ in range(4)])
print(answer)
'알고리즘 풀이 > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 새로운 게임2 풀이 With Python (0) | 2020.03.10 |
---|---|
백준 알고리즘 17822번 원판 돌리기 풀이 With Python (0) | 2020.03.10 |
백준 알고리즘 13458번 시험 감독 풀이 With Python (0) | 2020.03.09 |
백준 알고리즘 3190번 뱀 풀이 With Python (0) | 2020.03.09 |
백준 알고리즘 14888번 연산자 끼워넣기 풀이 with Python (0) | 2020.02.25 |
Comments