CodingTest/Baekjoon

[baekjoon] 백준 13413번(파이썬): 오셀로 재배치

JunJangE 2022. 1. 14. 12:18

문제

 

13413번: 오셀로 재배치

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

www.acmicpc.net

알고리즘

- 반복문을 통해 테스트 데이터를 확인한다.

- 반복문을 통해 오셀로 말의 초기 상태와 목표 상태를 확인한다.

- 초기 상태와 목표 상태가 다르면 초기 상태를 리스트에 추가한다.

- 리스트(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

 

GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법

내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.

github.com