알고리즘

백준 : : 2799번 블라인드 - C++ 풀이

green333 2022. 1. 5. 00:44
728x90
SMALL

https://www.acmicpc.net/problem/2799

 

2799번: 블라인드

첫째 줄에 M과 N이 공백으로 구분해서 주어진다. (1 ≤ M, N ≤ 100) 다음 줄에는 현재 건너편 아파트의 상태가 주어진다. 모든 창문은 문제 설명에 나온 것 처럼 4*4 그리드로 주어진다. 또, 창문과

www.acmicpc.net

 

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
#include <iostream>
#include <vector>
using namespace std;
 
int main(void){
    int floor;
    int numOfWind;
    int wind[5= {0,};
    
    string tmp;
    cin >> floor;
    cin >> numOfWind;
    
    int *count = new int[numOfWind](); //동적할당 0으로 초기화하는코드 
 
    vector<string> str;
    for(int i = 0 ; i < (5*floor)+1 ; i++){
        cin >> tmp;
        str.push_back(tmp);
    }
    
    for(int i = 1 ; i < (5*floor) ; i++){
 
        for(int j = 0 ; j < numOfWind ; j++){
 
            if(str[i][(5*j)+1== '.'){
                continue;
            }
            else if(str[i][(5*j)+1== '*'){
                count[j] = count[j]+1;
            }
        }
 
        if(i%5 == 4){
            for(int k = 0 ; k < numOfWind ; k++){
                wind[count[k]]++;
                count[k] = 0;
            }
            i++;
        }
    }
 
    for(int i = 0 ; i < 5 ; i ++){
        cout << wind[i] << " ";
    }
    cout << endl;
 
 
}
 
cs

 

int *count = new int[numOfWind](); 이렇게 뒤에 괄호 붙여주면 0으로 초기화됨!
. 인지 * 인지 확인해서 *일때마다 j+1번째 창문에 +1을 해줌으로써 몇번째 유형인지 몇 번째 유형인지 표시

LIST