ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Codeforces Round #464 (Div. 2) - A - Love Triangle
    코드포스(CodeForce) 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

    반응형

    댓글

Designed by Tistory.