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

[๋ฐฑ์ค€,c++] 18430๋ฒˆ - ๋ฌด๊ธฐ ๊ณตํ•™

by ์•ˆ์ฃผํ˜• 2022. 8. 21.

๋ฌธ์ œ

18430๋ฒˆ: ๋ฌด๊ธฐ ๊ณตํ•™

์ฒซ์งธ ์ค„์—๋Š” ๊ธธ๋™์ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋‚˜๋ฌด ์žฌ๋ฃŒ์˜ ์„ธ๋กœ, ๊ฐ€๋กœ ํฌ๊ธฐ๋ฅผ ์˜๋ฏธํ•˜๋Š” ๋‘ ์ž์—ฐ์ˆ˜ N, M์ด ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค N, M โ‰ค 5) ๋‹ค์Œ N๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ์„œ, ๋งค ์ค„๋งˆ๋‹ค ๋‚˜๋ฌด ์žฌ๋ฃŒ์˜ ๊ฐ ์œ„์น˜์˜ ๊ฐ•๋„๋ฅผ ๋‚˜ํƒ€๋‚ด

www.acmicpc.net

์ฝ”๋“œ

#include <iostream>
#include <vector>

using namespace std;

int N, M , ans;
int map[6][6];
bool visited[6][6];
vector<pair<int,int>> coor[4] = { {{-1, 0 }, {0, 1}}, {{-1,0}, {0, -1}}, {{0, -1}, {1, 0}}, {{0, 1}, {1,0}} };

void backtracking(int x, int y, int sum){
    ans = max(ans, sum);
    
    if(y==M){
        y = 0;
        x++;
    }
    
    if(x==N) return;

    if(!visited[x][y]){
        for(int c = 0; c<4; c++){   // ๋ถ€๋ฉ”๋ž‘ ๋งŒ๋“ค๊ณ  ๋„˜์–ด๊ฐ€๊ธฐ
            int nx1 = x + coor[c][0].first;
            int ny1 = y + coor[c][0].second;
            int nx2 = x + coor[c][1].first;
            int ny2 = y + coor[c][1].second;
            
            if(nx1>=0 && nx2>=0 && nx1<N && nx2<N && ny1>=0 && ny2>=0 && ny1<M && ny2<M){
                if(visited[nx1][ny1] || visited[nx2][ny2]) continue;
                visited[nx1][ny1] = 1;
                visited[nx2][ny2] = 1;
                visited[x][y] = 1;
                
                backtracking(x, y+1, sum + (map[x][y]*2) + map[nx1][ny1] + map[nx2][ny2]);
                
                visited[x][y] = 0;
                visited[nx1][ny1] = 0;
                visited[nx2][ny2] = 0;
            }
        }
    }
    backtracking(x, y+1, sum);  // ๋ถ€๋ฉ”๋ž‘ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ๋„˜์–ด๊ฐ€๊ธฐ
}


int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
        
    cin>>N>>M;
    
    for(int i=0; i<N; i++){
        for(int k=0; k<M; k++){
            cin>>map[i][k];
        }
    }
    
    backtracking(0, 0, 0);
    cout<<ans;
}

ํ’€์ด

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฐ์—ด์—์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ใ„ฑ๋ชจ์–‘์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์•„๋ž˜์˜ ๋„ค ๊ฐ€์ง€ ๋ถ€๋ฉ”๋ž‘์„ ๋งŒ๋“ค์—ˆ์„ ๋•Œ์˜ ์ˆซ์ž์˜ ์ตœ๋Œ€ ํ•ฉ์„ ์ฐพ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

ํ•ด๋‹น ์นธ์— ๋…ธ๋ž€์ƒ‰์œผ๋กœ ์น ํ•ด์ง„ ๋ถ€๋ถ„์€ ์ค‘์‹ฌ์นธ์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋ฉฐ, ํ•ด๋‹น ์นธ์€ ์ ์ˆ˜๊ฐ€ ๋‘๋ฐฐ๋กœ ๋”ํ•ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

[๋ฐฑ์ค€,c++] 14712๋ฒˆ - ๋„ด๋ชจ๋„ด๋ชจ (Easy)

๋ฌธ์ œ 14712๋ฒˆ: ๋„ด๋ชจ๋„ด๋ชจ (Easy) ๋„ค๋ชจ๋Š” ๋ฟŒร—ร—ร— ๊ฒŒ์ž„์— ๊นŠ์€ ๊ฐ๋ช…์„ ๋ฐ›์•„, ์ง์‚ฌ๊ฐํ˜• ๋ชจ์–‘์˜ ๊ฒฉ์žํŒ๊ณผ โ€œ๋„ด๋ชจโ€๋ผ๋Š” ์ˆ˜์ˆ˜๊ป˜๋ผ์˜ ์ƒ๋ฌผ์„ ์ด์šฉํ•˜๋Š” โ€œ๋„ด๋ชจ๋„ด๋ชจโ€๋ผ๋Š” ๊ฒŒ์ž„์„ ๋งŒ๋“ค์—ˆ๋‹ค. ์ด ๊ฒŒ์ž„์˜ ๊ทœ์น™

dkswnkk.tistory.com

์ด์ „์— ์œ„ ๋ฌธ์ œ์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ ๋ฐฉ์‹์ฒ˜๋Ÿผ ๋ฐฐ์—ด์˜ ์ˆœ์„œ๋Š” (0,0) , (0,1), (0,2),..., (0,N), (1, 0)... (N , M) ๋ฐฉ์‹์œผ๋กœ ์„ ํƒํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜์˜€๊ณ , ๋ถ€๋ฉ”๋ž‘์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ bfs์™€ dfs ๋ฐฉํ–ฅ ํƒ์ƒ‰ ๋ฌธ์ œ์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ ๋ฐฉ๋ฒ•๊ณผ ๋™์ผํ•˜๊ฒŒ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€