출처 : 백준, https://www.acmicpc.net/problem/10164
10164번: 격자상의 경로
입력의 첫째 줄에는 격자의 행의 수와 열의 수를 나타내는 두 정수 N과 M(1 ≤ N, M ≤ 15), 그리고 ○로 표시된 칸의 번호를 나타내는 정수 K(K=0 또는 1 < K < N×M)가 차례로 주어지며, 각 값은 공백으
www.acmicpc.net
더보기
먼저, 생각해야 할 부분
-
풀이
def calcWay(start, end, map):
s_x, s_y = start
e_x, e_y = end
#시작점으로부터 가로 세로 통일
for i in range(s_x, e_x + 1):
map[i][s_y] = map[s_x][s_y]
for j in range(s_y, e_y + 1):
map[s_x][j] = map[s_x][s_y]
#합 구하기
for i in range(s_x+1, e_x + 1):
for j in range(s_y+1, e_y + 1):
map[i][j] = map[i-1][j] + map[i][j-1]
return map[e_x][e_y]
n, m, k = map(int, input().split())
map = [[1 for _ in range(m)] for _ in range(n)]
if k != 0:
#k 위치의 좌표 구하기
k -= 1
row = k // m
col = k % m
calcWay((0, 0), (row, col), map)
print(calcWay((row, col), (n-1, m-1), map))
else:#필수 칸이 없는 경우
print(calcWay((0, 0), (n-1, m-1), map))
레퍼런스 참고
시간 복잡도
최악의 경우 O(N^2)
알게 된 점
-
고찰
-
Github
Reference
'알고리즘 > Python' 카테고리의 다른 글
[python] LeetCode #1 - Two Sum (0) | 2022.07.13 |
---|---|
[python] 백준 14430 - 자원 캐기 (0) | 2022.07.10 |
[python] 백준 14494 - 다이나믹이 뭐예요? (0) | 2022.07.10 |
[python] 백준 9657 - 돌 게임3 (0) | 2022.07.10 |
[python] 백준 11051 - 이항계수 2 (0) | 2022.07.09 |