상세 컨텐츠

본문 제목

[Level3.] 등굣길 C++

C++/Programmers

by J2on 2024. 6. 20. 04:50

본문

<< 문제 >> 

 

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;
}

 

 

'C++ > Programmers' 카테고리의 다른 글

[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

관련글 더보기

댓글 영역