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

[๋ฐฑ์ค€,c++] 2138๋ฒˆ - ์ „๊ตฌ์™€ ์Šค์œ„์น˜

by ์•ˆ์ฃผํ˜• 2022. 7. 27.

๋ฌธ์ œ

 

2138๋ฒˆ: ์ „๊ตฌ์™€ ์Šค์œ„์น˜

N๊ฐœ์˜ ์Šค์œ„์น˜์™€ N๊ฐœ์˜ ์ „๊ตฌ๊ฐ€ ์žˆ๋‹ค. ๊ฐ๊ฐ์˜ ์ „๊ตฌ๋Š” ์ผœ์ ธ ์žˆ๋Š” ์ƒํƒœ์™€ ๊บผ์ ธ ์žˆ๋Š” ์ƒํƒœ ์ค‘ ํ•˜๋‚˜์˜ ์ƒํƒœ๋ฅผ ๊ฐ€์ง„๋‹ค. i(1 < i < N)๋ฒˆ ์Šค์œ„์น˜๋ฅผ ๋ˆ„๋ฅด๋ฉด i-1, i, i+1์˜ ์„ธ ๊ฐœ์˜ ์ „๊ตฌ์˜ ์ƒํƒœ๊ฐ€ ๋ฐ”๋€๋‹ค. ์ฆ‰, ๊บผ์ ธ

www.acmicpc.net

 

์ฝ”๋“œ

#include <iostream>
#define INF 1e6
using namespace std;

int switch_first = 0, switch_second = 1 ;

bool check(string blub, string make, int seq){
    for(int i=1; i<blub.length(); i++){
        if(blub == make) return true;
        if(blub[i-1] != make[i-1]){
            blub[i-1]=='0'?blub[i-1]='1':blub[i-1]='0';
            blub[i]=='0'?blub[i]='1':blub[i]='0';
            blub[i+1]=='0'?blub[i+1]='1':blub[i+1]='0';
            if(seq==1) switch_first++;
            else switch_second++;
        }
    }
    if(blub == make) return true;
    return false;
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    int N; cin>>N;
    string blub, make; cin>>blub>>make;
    //0๋ฒˆ ์•ˆ๋ˆŒ๋ ธ์„ ๋•Œ
    bool flag1 = check(blub, make, 1);
    if(!flag1) switch_first = INF;
    //0๋ฒˆ ๋ˆŒ๋ ธ์„ ๋•Œ
    blub[0]=='1'?blub[0]='0':blub[0]='1';
    blub[1]=='1'?blub[1]='0':blub[1]='1';
    bool flag2 = check(blub, make, 2);
    if(!flag2) switch_second = INF;
    
    if(switch_first == INF && switch_second == INF) cout<<-1;
    else cout<<min(switch_first, switch_second);
}

 

ํ’€์ด

๊ทธ๋ฆฌ๋”” ๋ฌธ์ œ์ง‘์„ ํ†ตํ•ด ์‹œ์ž‘๋ถ€ํ„ฐ ๊ทธ๋ฆฌ๋””๋ผ๋Š” ์‚ฌ์‹ค์„ ์ธ์ง€ํ•˜๊ณ  ์žˆ์—ˆ์ง€๋งŒ, ๊ทธ๋ ‡์ง€ ์•Š์•˜๋‹ค๋ฉด DP๋กœ ์ ‘๊ทผํ•˜๋‹ค๊ฐ€ ๊ฒฐ๊ตญ ๋ชป ํ’€์—ˆ์„ ๊ฒƒ ๊ฐ™์•˜๋˜ ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. ๋„์ €ํžˆ ํ’€์ด ์•„์ด๋””์–ด๋ฅผ ๋– ์˜ฌ๋ฆฌ์ง€ ๋ชปํ•ด ์•„๋ž˜ ๋‘ ๋ธ”๋กœ๊ทธ์˜ ๊ธ€์„ ๋ณด๊ณ  ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. https://burningjeong.tistory.com/409
  2. https://staticvoidlife.tistory.com/143

๋ฌธ์ œ ํ’€์ด ์•„์ด๋””์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ขŒ์ธก์˜ ์ „๊ตฌ๋Š” ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๊ณ , ํ˜„์žฌ ์ „๊ตฌ๊ฐ€ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ์ „๊ตฌ์™€ ๊ฐ™์€์ง€๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. 

  1. ํ˜„์žฌ ์ธ๋ฑ์Šค์˜ ์ „๊ตฌ๊ฐ€ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ์ธ๋ฑ์Šค์˜ ์ „๊ตฌ์™€ ๊ฐ™๋‹ค๋ฉด ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค.
  2. ๋งŒ์•ฝ ํ˜„์žฌ ์ธ๋ฑ์Šค์˜ ์ „๊ตฌ๊ฐ€ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ์ธ๋ฑ์Šค์˜ ์ „๊ตฌ์™€ ๋‹ค๋ฅด๋‹ค๋ฉด ์šฐ์ธก์˜ ์ „๊ตฌ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
  3. ์ฆ‰, ์ขŒ์ธก์˜ ์ „๊ตฌ๋Š” ์‹ ๊ฒฝ์“ฐ์ง€ ๋ง๊ณ  ํ˜„์žฌ ์ „๊ตฌ๋งŒ ์‹ ๊ฒฝ ์จ์„œ ๋งŒ๋“  ๋‹ค์Œ ์ตœ์ข…์ ์œผ๋กœ ์›ํ•˜๋Š” ์ „๊ตฌ๊ฐ€ ๋œ๋‹ค๋ฉด ์ตœ์†Ÿ๊ฐ’์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ 0๋ฒˆ ์ธ๋ฑ์Šค์˜ ์ „๊ตฌ๋ฅผ ๋ˆŒ๋ €์„๋•Œ ์™€ ๋ˆ„๋ฅด์ง€ ์•Š์•˜์„ ๋•Œ์˜ ์Šค์œ„์น˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€