기억보다는 기록을 해볼까

C++ 공부 16일차 (2606, 2630, 9095, 9375) 본문

백준으로 C++ 공부하기

C++ 공부 16일차 (2606, 2630, 9095, 9375)

옥상에서 2021. 11. 7. 20:20
728x90

오늘 공부한 백준

2606, 2630, 9095, 9375

 

2606

바이러스

DFS로 풀었다. 방문 했는지도 확인 해야함

int dfs(int num) {
    if(arr[num] == UNVISITED){
        arr[num] = VISITED;
        cnt++;
        for(int i = 0; i < v[num].size(); i++){
            int c = v[num][i];
            dfs(c);
        }
    }
    return cnt;
}

2630

색종이 만들기

void check(int stCol, int stRow, int n) {
    flag = 0;

    int stcolor = map[stCol][stRow];
    for(int i = stCol; i < stCol + n; i++){
        for(int j = stRow; j < stRow + n; j++){
            //처음 숫자와 맞지 않아!
            if(stcolor != map[i][j]) {
                flag = -1;
                break;
            }
        }
        if(flag == -1) break;
    }

    //break되지 않고 진행 됐을 때
    if(flag != -1){
        if(stcolor == 0) wcnt++;
        else if(stcolor == 1) bcnt++;
    }
    //break 됐을 때
    else if(flag == -1){
        check(stCol, stRow, n/2);
        check(stCol + n/2, stRow, n/2);
        check(stCol, stRow + n/2, n/2);
        check(stCol + n/2, stRow + n/2, n/2);
    }
}

9375

패션왕 선혜빈

map에 차례대로 접근하는 방법

//첫번째
for (auto iter : map) {
    sum *= (iter.second +1);
}

//두번째
for(auto it = map.begin(); it!=map.end(); it++) {
    sum *= ((*it).second + 1);
}

 

728x90
Comments