문제
알고리즘
- 반복문을 통해 테스트 데이터를 확인한다.
- 반복문을 통해 오셀로 말의 초기 상태와 목표 상태를 확인한다.
- 초기 상태와 목표 상태가 다르면 초기 상태를 리스트에 추가한다.
- 리스트(cnt) => "B", "W" 중에 제일 많은 개수를 가진 초기 상태의 개수를 출력하면 된다.
ex) "B"의 개수가 2이고 "W"의 개수가 1일 때 "B"와 "W"의 자리를 바꿔주면 되고 "B"를 "W"로 뒤집어 주면 된다. 따라서 초기 상태와 목표 상태가 다른 오셀로 말 중 개수가 많은 말의 개수를 출력하면 된다.
코드
import sys
t = int(sys.stdin.readline())
# 반복문을 통해 테스트 데이터를 확인
for _ in range(t):
n = int(sys.stdin.readline())
initial_state = list(map(str, sys.stdin.readline().rstrip("\n")))
target_state = list(map(str, sys.stdin.readline().rstrip("\n")))
cnt = []
# 반복문을 통해 오셀로말의 초기 상태와 목표 상태를 확인
for i in range(n):
# 초기 상태와 목표 상태가 다르면 초기 상태를 리스트에 추가
if initial_state[i] != target_state[i]:
cnt.append(initial_state[i])
# 리스트에 아무것도 없다면 초기 상태와 목표 상태가 같은 것
if not cnt:
print(0)
# 리스트에 "B"상태가 많다면 "B"의 개수만큼 작업
elif cnt.count("B") >= cnt.count("W"):
print(cnt.count("B"))
# 리스트에 "W"상태가 많다면 "W"의 개수만큼 작업
else:
print(cnt.count("W"))
github
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 4959번(파이썬): 비밀번호 발음하기 (0) | 2022.01.16 |
---|---|
[baekjoon] 백준 4889번(파이썬): 안정적인 문자열 (0) | 2022.01.15 |
[baekjoon] 백준 5555번(파이썬): 반지 (0) | 2022.01.13 |
[baekjoon] 백준 1251번(파이썬): 단어 나누기 (0) | 2022.01.12 |
[baekjoon] 백준 2671번(파이썬): 잠수함식별 (0) | 2022.01.11 |