백준/Inha Algorithm Study Group

DAY2 중급 - 백준 13413번 (C++)

FDEE 2020. 9. 4. 00:26

www.acmicpc.net/problem/13413

 

13413번: 오셀로 재배치

로봇을 좋아하는 세희는 로봇동아리에서 카메라와 센서, 라즈베리 파이, 집게발을 이용해 로봇을 완성하였다. 이 로봇을 통해서 오셀로 재배치라는 작업을 하려고 한다. 오셀로 말은 앞면이 검�

www.acmicpc.net

 

<답안>

#include <iostream>
using namespace std;
int main()
{
    ios::sync_with_stdio(0); cin.tie(NULL);
    int t,n;
    string before;
    string after;
    int Wcount = 0;
    int Bcount = 0;
    cin>>t;
    while(t--)
    {
        cin>>n>>before>>after;
        for(int i=0; i<n; i++)
        {
            if(after.at(i) != before.at(i))
            {
                if(before.at(i) == 'W')
                    Wcount++;
                else
                    Bcount++;
            }
        }
        if(Wcount > Bcount)
            cout<<Wcount<<"\n";
        else
            cout<<Bcount<<"\n";
        Wcount = 0;
        Bcount = 0;
    }
    return 0;
}

 

<설명>

W가 다른 개수, B가 다른 개수를 각각 구한다음에 둘중 큰 수를 출력하면 되는 문제이다

잘생각해보면 count를 할 필요없이 큰수 자체가 바꾸는 총 수임을 알 수 있다

 

이전값, 이후값을 string 형태로 입력받아 인덱스 i=0부터 n-1까지 증가시키며 이전값과 이후값이 다른경우

만약 이전 입력값이 'W'경우 Wcount를 증가시킨다

만약 이전 입력값이 'B'경우 Bcount를 증가시킨다

 

그후 큰값을 출력하면 끝난다