728x90
728x90
5
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
6
0 0 0 0 0 0
0 1 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
이런식으로 n, nxn의 입력이 들어올 때 파이썬에서는 다음과 같이 입력을 받을 수 있다.
n = int(input())
먼저 input()으로 받으면 string 형태로 들어오게 되므로 int로 형변환을 해주어야한다.
그리고 nxn의 입력을 받아받아 [[0, 0, 1, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]과 같이 저장해주어야하는데 방식이 조금 어색했다.
graph = [list(map(int, input().split())) for _ in range(n)]
map을 통해 띄어쓰기 단위로 split된 입력을 int형으로 형변환을 해주고 이를 list에 저장한다. 이러면 행마다의 list가 만들어지게 되는데 이를 다시 []로 감싸줘 graph를 최종적으로 저장한다.
그리고 동적계획법 dp를 사용하기 위해 방문한 곳인지 방문하지 않은 곳인지를 표시하는 3차원 배열을 선언했어야했다. 즉, shape가 (n, n, 3)인 dp list를 선언해야하고 안의 값을 모두 -1로 초기화했어야했다.
이를 위해선 다음과 같이 코드를 짜면 된다.
dp = [[[-1, -1, -1] for _ in range(n)] for _ in range(n)]
또는 [-1]* 3을 하면 [-1, -1, -1]이 되기 때문에
dp = [[[-1] * 3 for _ in range(n)] for _ in range(n)]
위의 방식도 가능하다.
728x90
728x90
'기타 > 백준 문제풀이' 카테고리의 다른 글
백준 16637번 문제 풀이(python) (0) | 2025.02.03 |
---|