백준 : 파이프 옮기기(17070) with 파이썬

2023. 11. 26. 20:57· 백준 : 동적 프로그래밍

 

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

 

17070번: 파이프 옮기기 1

유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의

www.acmicpc.net

 

 

 

import sys

input = sys.stdin.readline # 입력을 빠르게 받기 위해 sys.stdin.readline 사용
n = int(input()) # 격자의 크기 입력 받기
map = [list(map(int, input().split())) for _ in range(n)] # 격자 정보 입력 받기
dp = [[[0, 0, 0] for _ in range(n)] for _ in range(n)] # dp[i][j][k]: (i, j) 위치에서 k 방향으로 놓인 파이프의 경우의 수

# 파이프의 방향 설정: dp[가로][대각선][세로]
dp[0][1][0] = 1 # 첫 시작점이 [0,0]에서 가로방형인 [0,1]에서 시작하므로 dp를 dp[0][1][0] = 1로 초기화 해준다.

for i in range(n): # 동적 계획법(DP)을 이용하여 경우의 수 계산
    for j in range(2, n):
        if map[i][j] == 0: # 현재 위치가 벽이 아니라면
            if i >= 1: # 세로 방향으로 이동할 수 있는 경우의 수 계산
                dp[i][j][1] += dp[i - 1][j][1] + dp[i - 1][j][2]
                if map[i - 1][j] == 0 and map[i][j - 1] == 0: # 대각선 방향으로 이동할 수 있는 경우의 수 계산
                    dp[i][j][2] += sum(dp[i - 1][j - 1])
            dp[i][j][0] += dp[i][j - 1][0] + dp[i][j - 1][2] # 가로 방향으로 이동할 수 있는 경우의 수 계산
print(sum(dp[-1][-1])) # 목적지에서 가로, 대각선, 세로 방향으로 놓인 파이프의 경우의 수 합산

"""# 각 단계별로 dp 배열 출력
for i in range(n):
    for j in range(n):
        print(dp[i][j], end=" ")
    print()

"""
저작자표시 (새창열림)

'백준 : 동적 프로그래밍' 카테고리의 다른 글

백준 : 1로 만들기(1463) with 자바  (0) 2023.10.08
백준 : 피보나치 함수(1003) with 자바  (0) 2023.10.08
백준 : 가장 긴 바이토닉 부분 수열(11054) with 자바  (0) 2023.09.24
백준 : 제곱수들의 합(1699) with 자바  (0) 2023.09.24
백준 : LCS(9251) with 파이썬  (0) 2023.08.18
'백준 : 동적 프로그래밍' 카테고리의 다른 글
  • 백준 : 1로 만들기(1463) with 자바
  • 백준 : 피보나치 함수(1003) with 자바
  • 백준 : 가장 긴 바이토닉 부분 수열(11054) with 자바
  • 백준 : 제곱수들의 합(1699) with 자바
유민기
유민기
유민기
Youminki
유민기
전체
오늘
어제
  • 분류 전체보기 (45)
    • 백준 : BFS (5)
    • 알고리즘(이충기 교수) (4)
    • 웹해킹 (6)
    • 백준 : 동적 프로그래밍 (11)
    • 백준 : 분할정복 (5)
    • 백준 : backtraking (2)
    • 컴퓨터 보안(한승철 교수) (4)
    • FrontEnd (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
유민기
백준 : 파이프 옮기기(17070) with 파이썬
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.