본문 바로가기

Python 코딩테스트

구현: 백준 1236 파이썬(Python)

반응형

문제:

https://www.acmicpc.net/problem/1236

 

1236번: 성 지키기

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

www.acmicpc.net

 

풀이:

이 문제는 해결 아이디어를 잘 생각할 필요가 있었다. 나는 접근을 잘못했고 결국 스스로 해결하지 못했다.

모자란 경비원의 수를 세는 아이디어는

행 기준, 열 기준으로 경비원이 필요한 수를 각각 계산해 더 큰 값을 출력하는 것이다.

 

col, row = map(int, input().split())

castle = []

for _ in range(col):
    castle.append(input())

a, b = 0, 0

for i in range(col):
    if "X" not in castle[i]:
        a += 1

for j in range(row):
    if "X" not in [castle[i][j] for i in range(col)]:
        b += 1

print(max(a, b))

이 코드를 보면 리스트 내포(List comprehension)을 사용한 것을 볼 수 있다.

문제를 풀면서 탐색을 어떻게 할지에 대해 고민을 많이 했는데, 리스트 내포를 사용하면 아주 간단하게 할 수 있었다.

리스트 내포를 잘 기억해두고 사용할 수 있도록 하자.

반응형