[백준] 12849번 본대 산책 (C++)

2025. 8. 5. 21:42·Algorithm
728x90

https://www.acmicpc.net/problem/12849

 

 

이 문제는 그래프를 만들어 D 시간이 주어졌을때 여러 경로를 이동하여 다시 돌아오는 경우의 수를 출력하는 문제이다.

 

따라서 그래프 간선관계를 만들어 dp배열을 사용하여 경우의수를 탐색해야 한다.

 

 

dp[시간][노드] = 경우의수

로 2차원 배열로 만들어 시간을 1초씩 늘린다음 노드를 확장시켜 경우의 수를 계속 누적시켜 더했다.

 

정답 코드

#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> pii;
typedef long long ll;
#define endl "\n"
#define MAX 1e9

int dx[] = {-1, 0, 1, 0, 1, -1, -1, 1};
int dy[] = {0, 1, 0, -1, -1, 1, -1, 1};
int D;
vector<vector<int>> v(8);
vector<pii> tmp = {{0, 1}, {0, 2}, {1, 2}, {1, 3}, {2, 3}, {2, 4},
                   {3, 4}, {3, 5}, {4, 5}, {5, 6}, {6, 7}, {4, 7}};
ll dp[100001][8];

void solve() {
    for(auto it : tmp) {
        int a = it.first;
        int b = it.second;

        v[a].push_back(b);
        v[b].push_back(a);
    }

    dp[0][0] = 1;

    for(int i = 1; i <= 100000; i++) {			// 시간
        for(int j = 0; j < 8; j++) {			// 노드	
            for(auto it : v[j]) {				// 탐색하려는 노드에 연결된 노드들 확장
                dp[i][it] += dp[i-1][j];
                dp[i][it] %= 1000000007;
            }
        }
    }

    cout << dp[D][0];
}

void input() {
    cin >> D;
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);

    input();
    solve();
}

 

 

회고록

문제를 처음 봤는데 되게 신기했던 문제였다 그래프를 확장시키며 dp 배열을 채우는게

좀 새롭게 접한 방법이였던 것 같다.

728x90
저작자표시 (새창열림)

'Algorithm' 카테고리의 다른 글

[백준] 17141번 연구소 2 (C++)  (0) 2025.08.07
[백준] 2473번 세 용액 (C++)  (0) 2025.08.06
[백준] 9024번 두 수의 합 (C++)  (0) 2025.08.04
[백준] 25193번 곰곰이의 식단 관리 (C++)  (0) 2025.08.03
[백준] 3987번 보이저 1호 (C++)  (0) 2025.08.02
'Algorithm' 카테고리의 다른 글
  • [백준] 17141번 연구소 2 (C++)
  • [백준] 2473번 세 용액 (C++)
  • [백준] 9024번 두 수의 합 (C++)
  • [백준] 25193번 곰곰이의 식단 관리 (C++)
쿨쿨.
쿨쿨.
  • 쿨쿨.
    All of the life
    쿨쿨.
  • 전체
    오늘
    어제
    • 분류 전체보기 (287) N
      • Programming (54) N
        • C, C++ (18)
        • Python (6)
        • Java (1)
        • HTML,CSS,JS (3)
        • SQL(DB) (13)
        • SpringBoot (10) N
        • Android (2)
        • CI,CD (1)
      • Algorithm (173)
        • Review (4)
      • Security (14)
        • WebHacking (3)
        • Websecurity (11)
      • OS (19)
        • Linux (12)
        • Mac os (2)
      • 머신러닝 (1)
      • CS(Computer Science) (12)
        • 컴퓨터 네트워크 (3)
        • 컴퓨터 구조 (1)
        • 인공지능 (8)
      • Docker (2)
      • Dev Book Review (3)
        • Clean Code (1)
        • Effective Java (0)
        • Real MySQL (2)
      • SWM (1)
      • Review (6)
      • AWS (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    재귀
    이분탐색
    우선순위 큐
    시뮬레이션
    에라토스테네스의 체
    Leviathan
    비트마스킹
    브루트포스
    구현
    DP
    DFS
    Bandit
    누적합
    그래프 이론
    다익스트라
    WebSecurity
    투포인터
    다이나믹 프로그래밍
    트리
    wargame
    c언어
    우선순위큐
    정렬
    그리디
    백트래킹
    깊이우선탐색
    BFS
    코딩
    linux
    백준
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.6
쿨쿨.
[백준] 12849번 본대 산책 (C++)
상단으로

티스토리툴바