반응형
https://www.acmicpc.net/problem/3109
3109번: 빵집
문제 유명한 제빵사 김원웅은 빵집을 운영하고 있다. 원웅이의 빵집은 글로벌 재정 위기를 피해가지 못했고, 결국 심각한 재정 위기에 빠졌다. 원웅이는 지출을 줄이고자 여기저기 지출을 살펴�
www.acmicpc.net

그리디 알고리즘 + BFS 문제.
최대한 많은 가스관을 배치하기 위해서는, 가급적이면 가스관이 우상향이 되어야 한다.
따라서 우상향 / 직진 / 우하향 순서대로 파이프를 설치할 수 있는지 DFS로 확인해야 한다.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import sys | |
r, c = map(int, sys.stdin.readline().split()) | |
maps = [] | |
for y in range(r): | |
arr = list(sys.stdin.readline().replace("\n","")) | |
maps.append(arr) | |
# 많은 파이프를 심으려면, 최대한 우상향으로 접근해야 함. | |
dirs = [(-1,1),(0,1),(1,1)] | |
end_line = len(maps[0])-1 | |
def connect_pipe(y: int, x: int) -> bool: | |
# 현재 위치에 파이프 생성 | |
maps[y][x] = 'x' | |
if x == end_line: | |
return True | |
for dy, dx in dirs: | |
ny, nx = y+dy, x+dx | |
# 다음 위치에 파이프 생성이 가능한지 확인 | |
if 0 <= ny < len(maps) and 0 <= nx < len(maps[0]) and maps[ny][nx] == ".": | |
if connect_pipe(ny, nx): | |
# 끝까지 설치가 가능할 경우 이 분기로 진입하게 됨. | |
return True | |
return False | |
answer = 0 | |
for y in range(len(maps)): | |
if connect_pipe(y,0): | |
answer += 1 | |
print(answer) | |
반응형
'프로그래밍 > 코딩테스트 문제풀이' 카테고리의 다른 글
[Python] LeetCode 42. Trapping Rain Water (0) | 2020.07.30 |
---|---|
[Python] 프로그래머스. 가장 긴 팰린드롬 (Level 3) (0) | 2020.07.29 |
[Python] 백준 2458. 키 순서 (0) | 2020.07.24 |
[Python] 백준 9461. 파도반 수열 (0) | 2020.07.23 |
[Python] 백준 3197. 백조의 호수 (0) | 2020.07.21 |