๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€,c++] 14391๋ฒˆ - ์ข…์ด ์กฐ๊ฐ

by dkswnkk 2021. 11. 7.
 

14391๋ฒˆ: ์ข…์ด ์กฐ๊ฐ

์˜์„ ์ด๋Š” ์ˆซ์ž๊ฐ€ ์“ฐ์—ฌ ์žˆ๋Š” ์ง์‚ฌ๊ฐํ˜• ์ข…์ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ข…์ด๋Š” 1×1 ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜• ์นธ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๊ณ , ์ˆซ์ž๋Š” ๊ฐ ์นธ์— ํ•˜๋‚˜์”ฉ ์“ฐ์—ฌ ์žˆ๋‹ค. ํ–‰์€ ์œ„์—์„œ๋ถ€ํ„ฐ ์•„๋ž˜๊นŒ์ง€ ๋ฒˆํ˜ธ๊ฐ€ ๋งค๊ฒจ์ ธ ์žˆ๊ณ ,

www.acmicpc.net

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>


using namespace std;

int map[4][4];

int main(){


    int N,M; cin>>N>>M;


    for(int i=0; i<N; i++){
        for(int k=0; k<M; k++){
            scanf("%1d",&map[i][k]);
        }
    }

    int ans=-9999;

    for(int i=0; i<(1<<N*M); i++){ //0: -(๊ฐ€๋กœ), 1:|(์„ธ๋กœ)
        int sum=0;
        for(int a=0; a<N; a++){ //๊ฐ€๋กœ ์˜ ๋ˆ„์  ํ•ฉ ๊ฒ€์‚ฌ
            int score=0;
            for(int b=0; b<M; b++){
                int row=a*M+b;  //๊ฐ ์นธ๋งˆ๋‹ค ์ˆœ์„œ๋Œ€๋กœ ๋ฒˆํ˜ธ๋ฅผ ๋งค๊ฒผ์„๋•Œ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ;
                if((i&(1<<row))==0) score=score*10+map[a][b];  //์—ฐ์†๋˜๋Š” ๊ฐ€๋กœ ์ผ๋•Œ ์ ์ˆ˜ ๋”ํ•ด์คŒ
                else{
                    sum+=score;
                    score=0;
                }
            }
            sum+=score;
        }


        for(int a=0; a<M; a++){ //์„ธ๋กœ์˜ ๋ˆ„์  ํ•ฉ ๊ฒ€์‚ฌ
            int score=0;
            for(int b=0; b<N; b++){
                int col=b*M+a;
                if((i&(1<<col))!=0) score=score*10+map[b][a];  //์—ฐ์†๋˜๋Š” ๊ฐ€๋กœ ์ผ๋•Œ ์ ์ˆ˜ ๋”ํ•ด์คŒ
                else{
                    sum+=score;
                    score=0;
                }
            }
            sum+=score;
        }
        ans=max(ans,sum);
    }

    cout<<ans;
}

๋Œ“๊ธ€