백준 12887 경로 게임 / python

이유참치·2025년 8월 12일

백준

목록 보기
42/248

문제 : 12887

풀이 point

세로 칸이 2개이기 때문에 위로 가거나 아래로 가거나 2가지 경우 밖에 없다. 이때 처음 경로에서 계속해서 오른쪽으로 가되 #을 만난다면 첫번째 칸이었다면 두번째 칸으로, 두번째 칸이었다면 첫번째 칸으로 피해서 경로를 이어나간다.

풀이 방법

초반에 존재한 화이트 개수 - (가장 적게 검정을 만드는 경로)를 빼면 된다.

풀이 코드

#백준, 12887 경로게임

import sys
input = sys.stdin.readline

MAX = 9999

def bfs(x, y):
    cnt = 1
    if grid[x][y] != '.':
        return MAX
    while y != M-1:
        if grid[x][y+1] == '.':
            y += 1
        else:
            x = 0 if x == 1 else 1
        cnt += 1
    return cnt

M = int(input())
grid = [list(input().rstrip()) for i in range(2)]

white = sum(row.count('.') for row in grid)

print(white-min(bfs(0, 0), bfs(1, 0)))
profile
임아리 - 대학생

0개의 댓글