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
'백준 문제 > 파이썬' 카테고리의 다른 글
| 백준 23351 물 주기(python)-[sliver(3)] (8) | 2023.10.24 |
|---|---|
| 백준 2164 카드2(python)-[sliver(4)] (4) | 2023.10.19 |
| 백준 2164 카드2(python)-[sliver(4)] (2) | 2023.10.17 |
| 백준 10845 큐(python)-[sliver(4)] (5) | 2023.10.16 |
| [백준] 런타임 에러 (OverflowError) (2) | 2023.10.13 |