[프로그래머스] 등굣길
등굣길 1. 이해하기 물에 잠기지 않은 지역을 통해 학교를 가려고 한다. 집에서 학교까지 갈 수 있는 최단 경로의 개수를 1000000007로 나눈 나머지를 반환해야한다. DP문제이다. 2. 구현하기 dfs(x,y,d,m,n,map): 현재 위치 x,y, 온 방향 d를 가지고 map크기가 nxm이다. 현재 위치: x,y, 온 방향: d를 모두 가지고 dp에 저장해야 한다. 그렇지 않으면 dp를 더해주는 부분에서 의도치 않은 값이 더해지게 된다. x,y가 가는 방향에 대해서 문제를 풀어주면 된다. int dfs(int x, int y, int d, int m, int n, vector& map) { if(x >= n or y >= m) return 0; if(map[x][y] == 1) return 0; ..
[프로그래머스] 여행경로
여행경로 1. 이해하기 주어진 항공권을 모두 이용하여 여행경로를 짜려고 한다. 항상 "ICN" 공항에서 출발한다. 방문하는 공항 경로를 배열에 담아 출력한다. dfs문제이다. 2. 구현하기 dfs(here,tickets,visited,tmp,answer,cnt): 현재 위치에서 tickets들을 살펴보면서 출발지가 현재위치이고 아직 방문하지 않은 곳을 방문한다. 이때 방문한다면 cnt를 1 증가시킨다. cnt가 모든 티켓의 수와 같다면 answer에 경로가 담긴 tmp값을 answer에 넣어주고 true를 반환한다. bool dfs(string here, vector& tickets, vector& visited, vector& tmp, vector& answer, int cnt) { tmp.push_b..