꾸준히 합시다

백준 파이썬 1236번: 성 지키기 본문

코딩 테스트 문제 풀이

백준 파이썬 1236번: 성 지키기

tturbo0824 2021. 3. 8. 13:09

www.acmicpc.net/problem/1236

 

1236번: 성 지키기

첫째 줄에 성의 세로 크기 N과 가로 크기 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 성의 상태가 주어진다. 성의 상태는 .은 빈칸, X는 경비원이 있는 칸이다

www.acmicpc.net

문제 유형: 구현

 

# Solution 1

n, m = map(int, input().split())
array = []

for _ in range(n):
    array.append(input())

row_count, col_count = 0, 0

for i in range(n):
    if 'X' not in array[i] :
        row_count += 1
        
for j in range(m):
    if "X" not in [array[i][j] for i in range(n)]:        
        col_count += 1
print(max(row_count, col_count))

 

# Solution 2

n, m = map(int, input().split())
array = []

for _ in range(n):
    array.append(input())

row = [0] * n
col = [0] * m


for i in range(n):
    for j in range(m):
        if array[i][j] == "X" :
            row[i] = 1
            col[j] = 1

row_count = 0
for i in range(n):
    if row[i] == 0:
        row_count += 1
col_count = 0

for i in range(m):
    if col[i] == 0:
        col_count += 1
        
print(max(row_count, col_count))

Solution 1, 2 둘 다 접근법은 같다.

각 행과 열마다 X가 들어있지 않는 행, 열의 개수를 구하고 그중 큰 값을 출력해주면 된다.

 

예를 들어 성의 상태가 아래와 같다고 하면 현재 경비원이 필요한 행은 1개, 열은 2개임으로 2를 출력해주면 된다.

 

      X
X      
       
X      

 

Comments