////////
Search

고관운

Q43105_정수 삼각형

문제 풀이

(1) 문제

(2) 코드

코드

풀이 방식

1.
둘째 줄부터 코드 시작
2.
해당 값의 왼쪽 위, 오른쪽 위의 값 중 더 큰 값을 자기 자신과 더하여 갱신 (단, 양 끝 값은 한 쪽 값만 존재하므로 예외 처리 필요)
3.
마지막으로 갱신 후, 마지막 줄에서 가장 큰 수 리턴

Q42898_등굣길

문제 풀이

(1) 문제

(2) 코드

코드

풀이 방식

주의할 점
m이 가로(열) 개수, n이 세로(행) 개수
1.
n * m 크기의 이중 리스트 선언 후 0으로 초기화
2.
웅덩이가 있는 곳은 -1로 초기화
3.
if((i == 0 and j == 0) or (arr[i][j] == -1)) : 집이 있는 곳이나 웅덩이가 있는 곳이면 continue
4.
elif(i == 0): if(arr[i][j-1] == -1): arr[i][j] = -1 else: arr[i][j] = 1 elif(j == 0): if(arr[i-1][j] == -1): arr[i][j] = -1 else: arr[i][j] = 1
Python
복사
i == 0, j == 0인 부분은 첫번째 그림의 빨간색 부분임
i == 0일 때, arr[i][j-1] == -1이면, 두번째 그림에서 아래에서 위쪽으로 올라오는 경우의 수 삭제
j == 0일 때, arr[i-1][j] == -1이면, 세번째 그림에서 오른쪽에서 왼쪽으로 오는 경우의 수 삭제
5.
else부분 왼쪽 위쪽 값이 모두 -1이면, -1 한쪽만 -1이면, 다른 쪽의 값으로 갱신 둘다 -1이 아니라면, 양쪽 값을 더해서 갱신
6.
학교 위치의 값이 -1이면 경우의 수가 없으므로 0 리턴, 그 외는 1000000007의 나머지 값을 리턴