코드포스(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<+ 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

반응형