728x90
반응형
https://www.acmicpc.net/problem/13413
[풀이]
이 문제는 두 개의 배열을 입력받아서 첫번째 것을 두번째 배열과 똑같이 만들려고 하는 것이다. 방법은 2가지인데, W,B가 있으면 두개를 바꾸던가 W->B(혹은 B->W) 이런식으로 바꿀 수 있다. W,B 2개를 바꾸면 한번에 2자리가 해결되는 것이므로 위치 바꿀 수 있으면 이 방법이 최소 횟수일 것이다.
n = int(input())
first = input()
second = input()
for i in range(n):
if first[i]!=second[i]:
arr.append(first[i])
내가 어려웠던 곳은 일단 서로 배열이 다르면 arr 배열에 저장해두었는데, 이걸 어떻게 해야 뒤집고 바꾸는 갯수를 다 알 수 있을까였다. 다른 곳이 짝수이면 나누기 2를 해주어서 몫을 더해줄까.. 이런 생각도 해보았는데
결국은 W랑 B가 있으면 더 큰 수를 출력하면 된다. arr에 입력받은 것이 만약 WBB라면 W랑 B는 서로 위치 바꾸어서 한 번이고, B하나 남은건 W로 바꾸어 줄테니까 총 개수가 2이다.
이건 결국 W랑 B중에 더 큰 수의 개수를 정답으로 하면 된다.
t = int(input())
arr=[]
ans=0
answer=[]
for i in range(t):
n = int(input())
first = input()
second = input()
for i in range(n):
if first[i]!=second[i]:
arr.append(first[i])
if arr.count('B')>=arr.count('W'):
ans=arr.count('B')
else:
ans = arr.count('W')
answer.append(ans)
arr=[]
for a in answer:
print(a)
728x90
반응형
'알고리즘 > 알고리즘 문제' 카테고리의 다른 글
[파이썬] [백준 - 7432번] 디스크 트리 (0) | 2022.11.04 |
---|---|
[파이썬] [백준 - 2193번] 이친수(DP) (0) | 2022.07.11 |
[파이썬] [2346 - 풍선 터트리기] (0) | 2022.01.08 |
[파이썬] [10799 쇠막대기] (0) | 2022.01.05 |
[파이썬] [1935 - 후위 표기식2] (0) | 2022.01.05 |