본문 바로가기
Algorithm/구현

[Python3] 백준 1236번 성 지키기

by HANNI하니 2023. 1. 3.

1236번: 성 지키기 (브론즈1, 구현)

문제

 

1236번: 성 지키기

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

www.acmicpc.net

정답

입력받은 n개의 행에서 X가 있지 않은 행의 개수와

m개의 열에서 X가 있지 않은 열의 개수를 찾아서 최대값을 구하는 형태

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

for _ in n:
	array.append(input()) #n개의 행만큼 array 리스트 생성

a,b = 0,0 #a=행개수/b=열개수

for i in range(n): #행 한개씩 확인
	if "X" not in array[i]: #X가 없으면 a에 1 더하기
    	a += 1 #X가 없는 총 행개수
for j in range(m): #열 한개씩 확인
	if "X" not in [array[i][j] for i in array[n]]: #X가 없으면 b에 1 더하기
    	b += 1 #X가 없는 총 열개수
        
print(max(a,b)) #행이나 열 둘중 X가 있으면 되기 때문에, 최대값 구하기!
#만약 행, 열 둘다 X가 없어야한다면, 최소값 구하면 된다.

 

공부한 내용

1. 코드 간소화

아래 코드는 내가 시도하고자 했던 방향. 물론 오답이다.

아직도 n,m을 한꺼번에 지정하는 것에 익숙하지 않다. 예) a,b = 0,0

또한, append 되지 않고 가장 마지막 line list만 저장되기 때문에 오답이다.

X = list(map(int,input().split()))
n = int(X[0]) #행
m = int(X[1]) #열

line = [0]

for i in range(n):
    line = list(map(str,input().split('/n')))
    line.append

 


레퍼런스

  • 다른 정답 풀이
 

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

www.acmicpc.net/problem/1236 1236번: 성 지키기 첫째 줄에 성의 세로 크기 N과 가로 크기 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 성의 상태가 주어진다. 성의 상

tturbo0824.tistory.com

  • 정답 깃허브
 

GitHub - yyeongeun/codingtest: 코딩테스트 공부

코딩테스트 공부. Contribute to yyeongeun/codingtest development by creating an account on GitHub.

github.com

 

댓글