처음에는 행은 행 따로 열은 열 따로
체크를 해줘야겠다라는 생각이
떠올랐다.
행은 x가 아예 없는 행의 개수를 세어주고
마찬가지로
열도 x가 아예 없는 열의 개수를 세어준다
이렇게 구한 개수중에 큰 값을 출력해주면 된다.
모든 행과 열에 최소한 한 명 이상의 경비원이 배치되어야 한다.
지금 위에서 구한 건
행과 열마다 각각 배치되어야할 경비원의 수를 구한것이다.
만약 행에 있어야할 경비원의 수가 2이고
열에 있어야할 경비원의 수가 3이라고 하자.
문제에서는 모든 행과 열에 경비원이 있어야한다고 했으니까최소한 3명이 있어야 위 조건을 만족할 수 있다.
따라서 max함수를 이용해서 구해주는 것이다.
n, m = map(int, input().split())
array = [input() for _ in range(n)]
row = 0
col = 0
for i in range(n):
if "X" not in array[i]:
row += 1
for i in range(m):
cnt = 0
for k in range(n):
if "X" not in array[k][i]:
cnt += 1
if cnt == n:
col += 1
print(max(row, col))
열에 관련된 연산을 할 때
이중 for문을 이용하여 구했다.
그런데 if문 자체에서 for문을 먼저 돌리게 되면
시간단축을 할 수 있다!!
이 부분을 생각해내지 못했다.
기억해 둘 필요가 있을 것 같아서
이렇게 메모한다.
if "X" not in [array[k][i] for k in range(n)]:
for k .. 반복문을 먼저 실행해서
리스트 형식으로 값을 받아온 뒤
해당 리스트에 "X"값이 있는지 확인하는 조건문을 실행한다.
n, m = map(int, input().split())
array = [input() for _ in range(n)]
row = 0
col = 0
for i in range(n):
if "X" not in array[i]:
row += 1
for i in range(m):
if "X" not in [array[k][i] for k in range(n)]:
col+=1
print(max(row, col))
'여니의 취준 준비 > 코딩테스트 (Python)' 카테고리의 다른 글
[n2477] 참외밭 in python (0) | 2021.10.30 |
---|---|
[n2422] 한윤정이 이탈리아에 가서 아이스크림을 사먹는데 in python (0) | 2021.10.27 |
[n15686] 치킨 배달 in python (0) | 2021.10.23 |
[n14503] 로봇 청소기 in python (0) | 2021.10.22 |
[n6603] 로또 in python (0) | 2021.10.21 |