본문 바로가기

백준 문제/파이썬

백준 13413 오셀로 재배치(python)-[sliver(4)]

728x90

문제-https://www.acmicpc.net/problem/13413

 

13413번: 오셀로 재배치

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

www.acmicpc.net

 

코드


for _ in range(int(input())):
    N=int(input())
    F=input()
    L=input()
    s=['', 0, 0]
    for i in range(N):
        if(F[i]!=L[i]):
            s[0]+=F[i]
    s[1]=s[0].count("W")
    s[2]=s[0].count("B")
    s.pop(0)
    print(max(s))
                                    F, S                                 수정할 문자열, 목표 문자열
  s 수정필요 문자들, 문자들 중 W의 수, B의 수

-처음 반복수를 입력 후 문자열 길이를 입력한다.

-F에는 바꿀 문자열, L에는 목표 문자열을 두고 반복문을 통해 바꿔야하는 문자열을 저장한다.

-여기서 W, F를 바꾸는데에는 한 번의 움직임이 소비된다. 따라서 W, F를 바꾸는 수를 합하고 겹치는 문자의 수를 합친다. 즉 s의  수 두 개를 합치고 겹치는 수, 제일 작은 숫자를 한 번 더 빼므로 결국 s에서 가장 큰 수를 출력한다.

-문자열이 min, max의 구별을 방해할 수 있기에 pop(0)을 이용해 삭제하였다

 

결과


input, output으로 표기

3
5
WBBWW
WBWBW
1
7
BBBBBBB
BWBWBWB
3
4
WWBB
BBWB
2
728x90