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

[๋ฐฑ์ค€,c++] 12782๋ฒˆ - ๋น„ํŠธ ์šฐ์ •์ง€์ˆ˜

by dkswnkk 2022. 9. 27.

๋ฌธ์ œ

 

12782๋ฒˆ: ๋น„ํŠธ ์šฐ์ •์ง€์ˆ˜

์ง„ํ™์ด๋Š” ์ˆซ์ž๋ฅผ ์ข‹์•„ํ•œ๋‹ค. ์˜ค๋Š˜๋„ ์ˆซ์ž๋ฅผ ๊ฐ€์ง€๊ณ  ๋†€๋˜ ์ง„ํ™์ด๋Š” ๋‘ ์ˆซ์ž์˜ ๋น„ํŠธ ์šฐ์ •์ง€์ˆ˜๋ฅผ ๊ตฌํ•ด๋ณด์•˜๋‹ค. ๋น„ํŠธ ์šฐ์ •์ง€์ˆ˜๋ž€, 10์ง„๋ฒ•์œผ๋กœ ๋‚˜ํƒ€๋‚ธ ๋‘ ์ •์ˆ˜๋ฅผ ์ด์ง„์ˆ˜๋กœ ๋‚˜ํƒ€๋‚ด์—ˆ์„ ๋•Œ, ๋‘ ์ˆซ์ž๋ฅผ ๊ฐ™

www.acmicpc.net

 

์ฝ”๋“œ

#include <iostream>
#include <queue>
#include <algorithm>
using namespace std;

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    int T; cin>>T;
    while(T--){
        string a, b; cin>>a>>b;
        queue<int> zero, one;
        int ans = 0;
        
        for(int i=0; i<a.length(); i++){
            if(a[i] != b[i]){
                if(a[i] == '0') zero.push(i);
                else if(a[i] == '1') one.push(i);
            }
        }
        int len = min(zero.size(), one.size());
        
        while(len--){   // ํ•˜๋‚˜์˜ ์ด์ง„์ˆ˜์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ์ž๋ฆฌ์— ์žˆ๋Š” ๋‘ ์ˆซ์ž์˜ ์œ„์น˜๋ฅผ ๋ฐ”๊พผ๋‹ค.
            swap(a[zero.front()], a[one.front()]);
            zero.pop();
            one.pop();
            ans++;
        }
        for(int i=0; i<a.length(); i++){    // ํ•˜๋‚˜์˜ ์ด์ง„์ˆ˜์—์„œ ์ž„์˜์˜ ์ž๋ฆฌ์˜ ์ˆซ์ž๋ฅผ 0 ๋˜๋Š” 1๋กœ ๋ฐ”๊พผ๋‹ค.
            if(a[i] != b[i]) ans++;
        }
        cout<<ans<<'\n';
    }
    
}

 

ํ’€์ด

A๋น„ํŠธ์™€ B๋น„ํŠธ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ A๋น„ํŠธ๋ฅผ B ๋น„ํŠธ๋กœ ์•„๋ž˜์˜ ๋‘ ์—ฐ์‚ฐ์„ ๊ฐ€์ง€๊ณ  ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ ์—ฐ์‚ฐ ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

  1. ํ•˜๋‚˜์˜ ์ด์ง„์ˆ˜์—์„œ ์ž„์˜์˜ ์ž๋ฆฌ์˜ ์ˆซ์ž๋ฅผ 0 ๋˜๋Š” 1๋กœ ๋ฐ”๊พผ๋‹ค.
  2. ํ•˜๋‚˜์˜ ์ด์ง„์ˆ˜์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ์ž๋ฆฌ์— ์žˆ๋Š” ๋‘ ์ˆซ์ž์˜ ์œ„์น˜๋ฅผ ๋ฐ”๊พผ๋‹ค.

2๋ฒˆ ์—ฐ์‚ฐ์„ ์ตœ๋Œ€ํ•œ ์‚ฌ์šฉํ•ด์•ผ ์ตœ์†Œ ์—ฐ์‚ฐ ํšŸ์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ’€์ด ์•„์ด๋””์–ด๋Š” 2๋ฒˆ ์—ฐ์‚ฐ์„ ์ตœ๋Œ€ํ•œ ์‚ฌ์šฉํ•œ ํ›„ 1๋ฒˆ ์—ฐ์‚ฐ์„ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

00110100 10010111

์œ„์™€ ๊ฐ™์€ ์˜ˆ์‹œ๋ฅผ ๊ฐ€์ง€๊ณ  ์ •๋ฆฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋จผ์ € 2๋ฒˆ ์—ฐ์‚ฐ์„ ์ตœ๋Œ€ํ•œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ A๋น„ํŠธ์™€ B๋น„ํŠธ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋น„๊ตํ•ด ๊ฐ€๋ฉด์„œ ๋น„ํŠธ๊ฐ€ ๋‹ค๋ฅผ ๊ฒฝ์šฐ 0 ์ˆซ์ž์™€ 1 ์ˆซ์ž ๊ฐ๊ฐ์˜ ์œ„์น˜๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

  • zero = [0, 6, 7]
  • one = [2]

๊ทธ ํ›„, ๋‘˜ ์ค‘ ์ž‘์€ ์‚ฌ์ด์ฆˆ์˜ ํฌ๊ธฐ๋งŒํผ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ 0์˜ ์œ„์น˜์™€ 1์˜ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์œ„์˜ ๊ฒฝ์šฐ 00110100์˜ 0๋ฒˆ์งธ ์ธ๋ฑ์Šค์™€ 2๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ํ›„ , 1๋ฒˆ ์—ฐ์‚ฐ์„ ์œ„ํ•ด  A๋น„ํŠธ์™€ B๋น„ํŠธ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋น„๊ตํ•ด ๊ฐ€๋ฉด์„œ ๋น„ํŠธ๊ฐ€ ๋‹ค๋ฅผ ๊ฒฝ์šฐ 0 ๋˜๋Š” 1๋กœ ๋ฐ”๊พธ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€