백준 1236번: 성 지키기 - 브론즈 1

Minhee kang·2021년 9월 16일
0

문제 보러 가기 👈

💡 풀이

✔ 풀이 방법

행을 반복하며 경비원이 없는 행 카운트(n_need)
열을 반복하며 경비원이 없는 열 카운트(m_need)

하나의 경비원당 행, 열 두가지를 만족
필요한 최소한의 경비원 수
= min(n_need, m_need) + max(n_need, m_need) - min(n_need, m_need)
= max(행에서 필요한 경비원 수, 열에서 필요한 경비원 수)

✔ 구현 코드

N, M = map(int, input().split())

castle = [input() for _ in range(N)]

n_need = 0
for s in castle:
    if 'X' not in s:
        n_need += 1
        
m_need = 0
for s in list(zip(*castle)):
    if 'X' not in s:
        m_need += 1

print(max(n_need, m_need))

📒2차원 배열 뒤집기 -> zip(*)사용

0개의 댓글