백준

백준 1303 전쟁 - 전투, c++

2024. 3. 3. 17:38

 

 

 

처음 작성한 코드는 다음과 같다.

하지만 틀렸다는 결과가 떴다.

순서대로 쭉 이어져 있어야 붙어있는 거라고 생각해 그렇게 코드를 짠 거였지만,

생각해보니 행렬 순서대로 옆이 아니라도 위 아래로 붙어 있는 경우도 고려해주어야했다.

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

int main(){
    int n, m;
    cin >> n >> m;
    
    char arr[n][m];
    for(int i=0; i<n; i++)
        for(int j=0; j<m; j++)
            cin >> arr[i][j];
    
    int myteam = 0;
    int otherteam = 0;
    
    int count = 1;
    for(int i=0; i<n; i++){
        for(int j=0; j<m; j++){
            if(i==0 && j==0)
                continue;
            
            if(arr[i][j] != arr[i][j-1]){
                if(arr[i][j] == 'W'){
                    otherteam += (pow(count, 2));
                    count = 1;
                }
                else { //arr[i][j] == 'B'일 때
                    myteam += (pow(count, 2));
                    count = 1;                    
                }
            }
            else {
                count++;
            }
        }
    }
    
    cout << myteam << " " << otherteam;
    
    return 0;
}

 

 

 

다시 작성한 코드는 다음과 같다.

이 문제를 해결하기 위해 탐색하는 코드를 사용해야 했다.

bfs 알고리즘으로 탐색하도록 구현했다.

'백준' 카테고리의 다른 글

백준 1495 기타리스트, c++  (0) 2024.03.05
백준 1743 음식물 피하기, c++  (0) 2024.03.04
백준 2294 동전2, c++  (0) 2024.03.02
백준 2293 동전 1, c++  (0) 2024.03.01
백준 3085 사탕 게임, c++  (0) 2024.02.29