<< 문제 >>
https://school.programmers.co.kr/learn/courses/30/lessons/42898
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
<< 풀이 >>
dp로 해결하는 문제입니다.
테이블에서 물 웅덩이가 되는 부분은 미리 -1로 설정하고, 테이블을 채워주면 되는 문제입니다.
<< 코드 >>
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int table[101][101];
int solution(int m, int n, vector<vector<int>> puddles) {
int answer = 0;
for(auto& a : puddles){ // 물 웅덩이 표시
table[a[0]][a[1]] = -1;
}
table[1][1] = 1; // 가장 처음 값 1로 설정
for(int i = 1; i<=m; i++){
for (int k=1; k<=n; k++){
if(table[i][k] == -1){ // 물 웅덩이인 경우
continue;
}
int valRight = table[i][k-1] ;
int valDown = table[i-1][k];
if(valRight == -1){ // 왼쪽 칸이 물 웅덩이였던 경우
valRight = 0;
}
if(valDown == -1){ // 윗 칸이 물 웅덩이였던 경우
valDown = 0;
}
table[i][k] += (valRight + valDown) % 1000000007;
}
}
answer = table[m][n];
return answer;
}
[Level2.] 할인 행사 C++ (0) | 2024.03.02 |
---|---|
[Level1.] 둘만의 암호 C++ (0) | 2024.03.01 |
[Level2.] 호텔 대실 C++ (0) | 2024.03.01 |
[Level2.] 튜플 C++ (0) | 2024.02.22 |
[Level2.] 숫자 변환하기 C++ (0) | 2024.02.18 |
댓글 영역