-
백준 14248번 : 점프 점프 (C 언어)c c++ 언어 공부 2023. 10. 12. 12:25
https://www.acmicpc.net/problem/14248
14248번: 점프 점프
첫 번째 줄에는 돌다리의 돌 개수 n이 주어진다.(1≤n≤100,000) 돌의 번호는 왼쪽부터 1번에서 n번이다. 다음 줄에는 그 위치에서 점프할 수 있는 거리 Ai가 주어진다.(1≤Ai≤100,000) 다음 줄에는 출
www.acmicpc.net
Code:
12345678910111213141516171819202122232425262728293031323334353637#include <stdio.h>int n;int arr[100001] = { 0, };int count = 0;int check[100001] = { 0, };void dfs(int start){if (check[start] == 0){count++;check[start] = 1;}int x_p = start + arr[start];int x_n = start - arr[start];if (x_p >= 1 && x_p <= n){dfs(x_p);}if (x_n >= 1 && x_n <= n){dfs(x_n);}}int main() {scanf("%d", &n);for (int i = 1; i <= n; i++){scanf("%d", &arr[i]);}int start = 0;scanf("%d", &start);dfs(start);printf("%d", count);}cs 문제 설명
주어진 돌다리에서 영우가 방문 가능한 돌들의 개수를 구하는 문제입니다. 각 돌마다 해당 돌에 적힌 숫자만큼 왼쪽이나 오른쪽으로 점프할 수 있으며, 돌다리 밖으로 나갈 수는 없습니다. 문제의 목표는 출발점에서 시작하여 방문 가능한 돌들의 개수를 세는 것입니다.
알고리즘 설명
주어진 문제는 DFS(Depth-First Search) 알고리즘을 사용하여 해결할 수 있습니다. DFS를 활용하여 출발점에서 시작하여 방문 가능한 돌들의 개수를 세어나갑니다.
주요 단계는 다음과 같습니다:
- 출발점에서 DFS를 시작합니다.
- DFS 함수 내에서 현재 위치에서 왼쪽과 오른쪽으로 갈 수 있는 위치를 계속해서 탐색하며 방문 가능한 돌들의 개수를 세어나갑니다.
- 방문 가능한 돌들의 개수를 출력합니다.
'c c++ 언어 공부' 카테고리의 다른 글
백준 1668번 : 트로피 진열 (C 언어) (0) 2023.10.15 백준 3023번 : 마술사 이민혁 (C 언어) (1) 2023.10.14 백준 3985번 : 롤 케이크 (C 언어) (0) 2023.10.10 백준 2460번 : 지능형 기차2 (C 언어) (1) 2023.10.09 백준 2455번 : 지능형 기차 (C 언어) (0) 2023.10.09