코드포스(CodeForce)
Codeforces Round #464 (Div. 2) - A - Love Triangle
cepiloth
2018. 8. 17. 17:44
반응형
1. 문제
2. 알고리즘
키워드 - 구현
* 문제 이해
문제 그대로 풀면 된다.
A = B, B = C, C = A 의 값의 가리 키도록 하면 된다.
각각의 원소는 인덱스를 뜻하고 인덱스의 값이 된다.
* 문제 풀면서 삽질 했던 점
처음 인덱스(1) 기준으로 A = B, B = C, C = A 를 찾았던 것이 가장 큰 문제였다.
처음 INDEX 가 정답이 아닌 경우에는 INDEX 를 증가하면서 찾았어야 했는데 주화입마에 빠져서 다른 생각을 하지 못했다.
코드 포스의 1번 문제는 대부분 큰 알고리즘을 요구하지 않는다. 문제만 이해하면 대부분 풀수 있는 문제가 대부분이다.
A 라는 생각에 갖혀서 다른 생각을 하지 못 하게 되서 2시간을 소비 했다. tekken 붕권 고수님에게 물어보고 싶었지만 뼈저리게 느껴야지만 성장 할 수 있고 스스로
해결하지 않으면 자꾸 의지하게 되서 안했다. 아무튼 그렇다.
스스로 문제를 분석하고 축소 해야하는데 너무 어렵게 생각했던거 같다. 간단하게 생각하기를 연습 해야 겠다
3. 코드
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #include <iostream> #include <vector> #include <algorithm> #include <functional> #include <string> using namespace std; int main() { int n; cin >> n; vector<int> arr(n + 1); arr[0] = 0; for (int i = 1; i<n + 1; i++) { cin >> arr[i]; } int cand[4] = { 0, }; bool sol = false; for (int i = 1; i < n + 1; i++) { /* * @brief : 문제의 원흉 * @description : cand[0] = arr[1] 항상 첫 번째 index 기준으로 값을 구해서 생긴 문제 * tekken 님한테 배운것 중 하나 짜증나 욕을 써라! 아 아 놔 왜 내가 !!!!!!!!!!!!!!!!!!!!!!!!!! * 1로 놓고 계속 안 변한다고 생각을 했을까 !!!!!!!!!!!!!!!!!!!! */ cand[0] = arr[i]; cand[1] = arr[cand[0]]; cand[2] = arr[cand[1]]; cand[3] = arr[cand[2]]; bool first = cand[0] != cand[1]; bool second = cand[1] != cand[2]; bool third = cand[2] != cand[3]; bool last = cand[0] == cand[3]; sol = first && second && third && last; if (sol) { break; } } if (sol) { cout << "YES"; } else { cout << "NO"; } return 0; } | cs |
반응형