모각코

[모각코] 2024 동계 모각코 03회차

귤파는 감자 2024. 1. 16. 22:24

일시 및 장소

- 2024년 1월 16일 화요일 19시 00분 ~ 22시 00분 (3시간)
- discord 팀 채널

목표

코드트리 시뮬레이션 - 구간칠하기 문제 풀기
1. 최대로 겹치는 구간
2. 최대로 겹치는 지점
3. 왔다 갔던 구역

#include <iostream>
#include <vector>

using namespace std;

int main() {
    int n, max = 0;
    cin >> n;

    vector<int> v(101);

    for (int i = 0; i < n; i++) {
        int a, b;
        cin >> a >> b;
        
        for (int j = a; j <= b; j++) v.at(j)++;
    }

    for (int i = 0; i < v.size(); i++) {
        if (max < v.at(i)) max = v.at(i);
    }

    cout << max << endl;

    return 0;
}

https://www.codetree.ai/missions/5/problems/maximum-overlapped-segments?&utm_source=clipboard&utm_medium=text

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

 

#include <iostream>
#include <vector>

using namespace std;

int main() {
    int n, max = 0;
    cin >> n;

    vector<int> v(101);

    for (int i = 0; i < n; i++) {
        int a, b;
        cin >> a >> b;
        
        for (int j = a; j <= b; j++) v.at(j)++;
    }

    for (int i = 0; i < v.size(); i++) {
        if (max < v.at(i)) max = v.at(i);
    }

    cout << max << endl;

    return 0;
}

https://www.codetree.ai/missions/5/problems/maximum-overlapped-points?&utm_source=clipboard&utm_medium=text

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

 

#include <iostream>
#include <vector>

using namespace std;

int main() {
    int n, cnt = 0, t = 0;
    cin >> n;

    vector<int> v(200);

    for (int i = 0; i < n; i++) {
        int a;
        char b;
        cin >> a >> b;

        int prev = t;

        (b == 'R') ? (t += a) : (t -= a);

        prev += 100;
        t += 100;

        int s, e;
        if (prev < t) {
            s = prev;
            e = t;
        } else {
            s = t;
            e = prev;
        }

        for (int i = s; i < e; i++) v.at(i)++;

        t -= 100;
        prev -= 100;
    }

    for (int i = 0; i < v.size(); i++) {
        if (2 <= v.at(i)) cnt++;
    }

    cout << cnt << endl;

    return 0;
}

https://www.codetree.ai/missions/5/problems/area-been-to-and-from2?&utm_source=clipboard&utm_medium=text

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

// 틀린 코드
#include <iostream>
#include <vector>

using namespace std;

int main() {
    int n, t = 0;
    cin >> n;

    vector<int> W(200);
    vector<int> WB(200);
    vector<int> B(200);
    vector<int> BB(200);
    vector<int> G(200);

    for (int i = 0; i < n; i++) {
        int a;
        char b;

        cin >> a >> b;

        int prev = t;

        (b == 'R') ? (t += a) : (t -= a);

        prev += 100;
        t += 100;

        if (b == 'R') {
            for (int j = prev; j < t; j++) {
                if (G.at(j) == 0) {
                    WB.at(j) = 0;
                    BB.at(j)++;
                    B.at(j)++;
                }
            }
        } else {
            for (int j = t; j < prev; j++) {
                if (G.at(j) == 0) {
                    BB.at(j) = 0;
                    WB.at(j)++;
                    W.at(j)++;
                }
            }
        }

        // 각각 2개 이상이면 그레이로 바꾸기
        for (int j = 0; j < G.size(); j++) {
            if (B.at(j) > 1 && W.at(j) > 1) {
                G.at(j) = 1;
                B.at(j) = 0;
                BB.at(j) = 0;
                WB.at(j) = 0;
                W.at(j) = 0;
            }
        }

        t -= 100;
        prev -= 100;
    }

    int b_cnt = 0, w_cnt = 0, g_cnt = 0;
    for (int i = 0; i < BB.size(); i++) {
        if (BB.at(i) > 0) b_cnt++;
        if (WB.at(i) > 0) w_cnt++;
        if (G.at(i) > 0) g_cnt++;
    }
    cout << w_cnt << ' ' << b_cnt << ' ' << g_cnt << endl;

    return 0;
}

https://www.codetree.ai/missions/5/problems/painting-white-black?&utm_source=clipboard&utm_medium=text

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

느낀점

구간칠하기 유형의 연습문제를 해설과 함께 풀어보고 진행하여, 연습문제에서 배웠던 개념을 응용하여 어려운 문제를 풀어보았다.
보통 난이도의 문제까지는 막힘없이 해결하였지만 어려움 난이도의 문제는 결국 해결하지 못하였다. 음수 index의 개념이 조금 헷갈렸던것 같고, 구간의 개념과 지점의 개념도 헷갈렸던것 같다. 또한 범위를 어디까지 잡아야 할지도 잘 파악하지 못하였기에 문제를 해결하지 못하였던것 같다.