Queue-ri/Advanced-Algorithm-Study

[Week 2] CLOCKSYNC self review - yujungee

Closed this issue · 0 comments

CLOCKSYNC self review

1. 해결 시도 과정

스위치마다 조작 가능한 시계의 개수가 다르니 벡터로 만들어야겠다고 생각.

2. 아이디어

3. 코드 설명

#include <iostream>
#include <vector>
using namespace std;

vector<vector<int>> v =
{
    {0,1,2},
    {3,7,9,11},
    {4, 10, 14, 15},
    {0, 4, 5, 6, 7},
    {6, 7, 8, 10, 12},
    {0, 2, 14, 15},
    {3, 14, 15},
    {4, 5, 7, 14, 15},
    {1, 2, 3, 4, 5},
    {3, 4, 5, 9, 13}
};

벡터에 주어진 스위치에 대한 시계 번호를 저장

int pushSwitch(int *clock){
    
    
    return 0;
}
int pushSwitch(int *clock){
    int answer = 0;
    int cnt=0;
    for (int i=0; i<16; i++) {
        if (clock[i] != 12) {
            for (int j=0; j<10; j++) {
                for (int c=0; c<v[i].size(); c++) {
                    if (v[j][c] == i) {
                        clock[c] += 3;
                        cnt++;
                        break;
                    }
                }
            }
        }
        
    }

    return answer;
}

i번째 시계가 12시가 아닐 때, j번째 스위치에 i번째가 있으면 i번째 스위치를 누르고 해당 시계를 모두 3시간씩 늘린다. 스위치 이용 수인 cnt를 +1 해준다.
최소를 구하는 부분은 구현하지 못했다.

입출력

int main() {

    int c, time;
    int clock[12];
    cin >> c;
    
    while(c--){
        
        for (int j=0; j<16; j++) {
            cin >> time;
            clock[j] = time;
        }
    }
    
    pushSwitch(clock);
    
    return 0;
}

4. 막힌 점 및 개선 사항

해당 스위치와 연결된 모든 시계들의 시간은 3시간씩 앞으로 움직여서 하나만 생각하는게 아니라 연결된 모든 시계를 고려해야 하는 점이 발목을 잡았다.