less than 1 minute read

문제

#29700 우당탕탕 영화예매
Silver4
적용 알고리즘: X(String)


풀이 방법

  • 각 줄마다 확인을 해야하기 때문에 각 줄에 몇개의 가능한 경우가 있는지 count를 해주는 함수를 만든다.
  • 필요한 문자열을 미리 제작하고, 주어진 문자열을 슬라이싱하여 확인한다.

코드 흐름

  1. 사용자에게서 입력을 받는다.
  2. 입력받은 각 줄(row)에 대해서 자리 검사를 한다.
  3. seat_available(): 몇 개의 가능한 경우가 있는지 반환하는 함수
    1. 매개변수로 특정 열 좌석의 구성과, 인원수를 받는다.
    2. 인원수만큼의 자리를 우선 생성한다.
    3. 각 열의 [i:i + n]번째 인덱스가 생성한 자리와 일치하는지 확인한다. 일치한다면 cnt를 하나 증가시킨다.
  4. 3의 과정을 모든 row에 대해서 반복하고, 값을 출력한다.

코드

# 각 줄마다 가능한 경우 반환
def seat_available(horizon, n):
    temp = "0" * n
    cnt = 0
    for i in range(0, len(horizon) - n + 1):
        if (horizon[i:i + n] == temp):
            cnt += 1
    return cnt

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

count = 0
for i in range(row):
    hor = input()
    count += (seat_available(hor, n))

print(count)

체감 난이도: 1.2/5