문제링크 : https://www.acmicpc.net/problem/11558
11558번: The Game of Death
첫 줄에는 테스트 케이스의 숫자 T가 주어지며, 이어서 T번에 걸쳐 테스트 케이스들이 주어진다. 매 테스트 케이스의 첫 줄에는 플레이어의 숫자 N(1 ≤ N ≤ 10,000)이 주어진다. 이어서 N줄에 걸쳐
www.acmicpc.net
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MAX = 987654321;
int N, T;
int arr[100001];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> T;
while(T--)
{
cin >> N;
memset(arr, 0, sizeof(arr)); //초기화
for(int i=1; i<=N; i++) cin >> arr[i];
int cur = arr[1]; int cnt=1;
while(cur!=N && cnt<=N) //전부 탐색하거나, 목표인 N이 될때까지
{
cur = arr[cur]; //이어진 값
cnt++;
}
cout << (cnt>N ? 0 : cnt) << "\n";
}
return 0;
}
시작점을 기준으로 연결된 다음 순서를 이어서 확인해준다.
문제에서 시작점은 1이라고 명시했기에 arr[1]을 시작으로 이어서 연결된 순서를 찾는다.
전부탐색하는 경우인 카운팅이 N까지 도달하는 경우 또는 현재 값 cur이 목표값인 N에 도달할 때 까지 위 탐색을 반복한다.
반복하면서 카운팅한 cnt를 기준으로 해당 cnt가 N을 넘어서면 주경이를 걸리도록 하는 것에 실패한 것이므로 0을 출력하고 아니라면 무사히 찾은 것이므로 해당 cnt를 출력한다.
상당히 피곤한 상태에서 풀어서 그런지 테스트케이스가 존재한다는 것을 잊고 초기화 및 개행 출력을 잊고 제출하다가 엄청 틀려버렸다.
'백준 > 실버' 카테고리의 다른 글
[백준 24482번] 알고리즘 수업 - 깊이 우선 탐색 4 (C++) (0) | 2024.01.03 |
---|---|
[백준 25601번] 자바의 형변환 (C++) (0) | 2023.12.30 |
[백준 15805번] 트리 나라 관광 가이드 (C++) (0) | 2023.12.27 |
[백준 18126번] 너구리 구구 (C++) (0) | 2023.12.24 |
[백준 27966번] △ (C++) (0) | 2023.12.22 |