티스토리 뷰
https://www.acmicpc.net/problem/1189
r, c, k = map(int,input().split())
graph = [str(input()) for _ in range(r)]
v = [[0]*c for _ in range(r)]
ans=0
#상하좌우 방향
dx = [-1,1,0,0]
dy = [0,0,-1,1]
def dfs(x,y,direct):
global ans
# 종료위치이고 거리가 k일 때
if x==0 and y==c-1 and k==direct:
ans+=1
return True
# 4방향
for i in range(4):
nx = x +dx[i]
ny = y +dy[i]
# 이동할 수 있는 위치일 때
if r > nx >=0 and c> ny >=0 and graph[nx][ny]=='.':
# 방문한 적이 없을 때
if v[nx][ny] == 0:
#방문처리
v[nx][ny]=1
#dfs
dfs(nx,ny,direct+1)
#방문처리 해제
v[nx][ny]=0
# 시작 위치 방문 처리
v[r-1][0] =1
dfs(r-1,0,1)
print(ans)
- 시작위치는 g[r-1][0], 종료위치는 g[0][c-1]
- 시작위치 부터 dfs를 실행하여 4방향 중 이동할 수 있고 방문한적이 없는 경우 dfs 실행
- 종료위치에 도착하고 이동거리가 k와 같을 때 ans증가
- ans 출력
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 회고
- 프론트엔드
- dfs
- seb
- Redux
- 브루드포스
- 프로그래머스
- 다이나믹 프로그래밍
- useContext
- 코드스테이츠
- 코테
- SEB43기
- til
- 감정 일기장
- SEB 43
- React quill
- 프로젝트
- dictionary
- Python
- 그리디 알고리즘
- 스택오버플로우
- SEB 43기
- 기술면접
- 개인 프로젝트
- SEB43
- 백준
- BFS
- 감정일기장
- 인적성
- 프리프로젝트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함