[SW Expert] #1220 S/W 문제해결 기본 5일차 - Magnetic :: 잡다한 프로그래밍
반응형

https://swexpertacademy.com/main/main.do

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

1. 해결방법

먼저 100x100 배열을 세로로 돌며 위에서 아래로 돌 때는 2인 경우는 값을 0으로 1인 경우는 break 하는 포문을 반대로 아래서 위로 돌 때는 1인 경우는 값을 0으로 2인 경우는 break 하게 한다 이후 다시 정의된 배열의 개수를 세는 방식으로 코딩하였다


2. 코드

#include<iostream>
#include<string.h>

int array[100][100];
int sum = 0;
int test_case;
int T;

using namespace std;

void check(){
    for(int i = 0; i < T; i++){
            for(int j = 0; j < T; j++){
        		if(array[j][i] == 2){
                 array[j][i] = 0;   
                } else if(array[j][i] == 1){
                 break;   
                }
        	}
	}
    
    
        for(int i = T-1; i >= 0; i--){
            for(int j = T-1; j >= 0; j--){
        		if(array[j][i] == 1){
                 array[j][i] = 0;   
                } else if(array[j][i] == 2){
                 break;   
                }
        	}
	}
}

void count(){    
    sum = 0;
    for(int i = 0; i < T; i++){
        int check = 0;
    	for(int j = 0; j < T; j++){
            if(array[j][i] == 1){
                check = 1;
            }else if(array[j][i] ==2 && check == 1){
                    check = 0;
	                sum++;
            }
        }
	}
    
}

int main(int argc, char** argv)
{
    for(int test_case = 1; test_case <= 10; test_case++){
	cin>>T;
	
        memset(array, 0, 100);
        for(int i = 0; i < T; i++){
            for(int j = 0; j < T; j++){
        		cin >> array[i][j];
        	}
		}
        check();
        count();
        
        cout << "#"<<test_case<< " " << sum << endl;
        
	
    }
	return 0;
}
반응형

+ Recent posts