https://school.programmers.co.kr/learn/courses/30/lessons/42898
๋ฌธ์ ์ค๋ช
๊ณ์๋๋ ํญ์ฐ๋ก ์ผ๋ถ ์ง์ญ์ด ๋ฌผ์ ์ ๊ฒผ์ต๋๋ค. ๋ฌผ์ ์ ๊ธฐ์ง ์์ ์ง์ญ์ ํตํด ํ๊ต๋ฅผ ๊ฐ๋ ค๊ณ ํฉ๋๋ค. ์ง์์ ํ๊ต๊น์ง ๊ฐ๋ ๊ธธ์ m x n ํฌ๊ธฐ์ ๊ฒฉ์๋ชจ์์ผ๋ก ๋ํ๋ผ ์ ์์ต๋๋ค.
์๋ ๊ทธ๋ฆผ์ m = 4, n = 3 ์ธ ๊ฒฝ์ฐ์ ๋๋ค.
๊ฐ์ฅ ์ผ์ชฝ ์, ์ฆ ์ง์ด ์๋ ๊ณณ์ ์ขํ๋ (1, 1)๋ก ๋ํ๋ด๊ณ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ์๋, ์ฆ ํ๊ต๊ฐ ์๋ ๊ณณ์ ์ขํ๋ (m, n)์ผ๋ก ๋ํ๋ ๋๋ค.
๊ฒฉ์์ ํฌ๊ธฐ m, n๊ณผ ๋ฌผ์ด ์ ๊ธด ์ง์ญ์ ์ขํ๋ฅผ ๋ด์ 2์ฐจ์ ๋ฐฐ์ด puddles์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ์ค๋ฅธ์ชฝ๊ณผ ์๋์ชฝ์ผ๋ก๋ง ์์ง์ฌ ์ง์์ ํ๊ต๊น์ง ๊ฐ ์ ์๋ ์ต๋จ๊ฒฝ๋ก์ ๊ฐ์๋ฅผ 1,000,000,007๋ก ๋๋ ๋๋จธ์ง๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- ๊ฒฉ์์ ํฌ๊ธฐ m, n์ 1 ์ด์ 100 ์ดํ์ธ ์์ฐ์์
๋๋ค.
- m๊ณผ n์ด ๋ชจ๋ 1์ธ ๊ฒฝ์ฐ๋ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง์ง ์์ต๋๋ค.
- ๋ฌผ์ ์ ๊ธด ์ง์ญ์ 0๊ฐ ์ด์ 10๊ฐ ์ดํ์ ๋๋ค.
- ์ง๊ณผ ํ๊ต๊ฐ ๋ฌผ์ ์ ๊ธด ๊ฒฝ์ฐ๋ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง์ง ์์ต๋๋ค.
์ ์ถ๋ ฅ ์
m | n | puddles | return |
4 | 3 | [[2, 2]] | 4 |
์ ์ถ๋ ฅ ์ ์ค๋ช
๋ด ํด๋ต
#include <string>
#include <vector>
#define MAX 1000000007
using namespace std;
int solution(int m, int n, vector<vector<int>> puddles) {
int answer = 0;
vector<vector<int>> road(n, vector<int>(m, -1));
// ๋ฌผ ์
๋ฉ์ด๊ฐ ์๋ ๊ณณ์ 0์ผ๋ก ์ฒ๋ฆฌํ๋ค.
for(const auto& p : puddles)
{
road[p[1]-1][p[0]-1] = 0;
}
// ์์ ์ง์ ์ 1๋ก ์ค์ ํ๋ค.
road[0][0] = 1;
// ๊ฒฝ๋ก์ ์๋ฅผ ๊ณ์ฐํ๋ค.
for(int y = 0; y < n; ++y)
{
for(int x = 0; x < m; ++x)
{
// ์์ง ๊ฐ์ง ์์ ๊ธธ์ผ ๊ฒฝ์ฐ
if(road[y][x] == -1)
{
if(x == 0 && y > 0)
road[y][x] = road[y-1][x] % MAX;
else if( x > 0 && y == 0)
road[y][x] = road[y][x-1] % MAX;
else
road[y][x] = (road[y-1][x] + road[y][x-1]) % MAX;
}
}
}
answer = road[n-1][m-1];
return answer;
}
์คํ์ ๋์ธ๊ฐ ๋ฐฐ์ ๋ ๊ธธ ์ฐพ๊ธฐ ๊ฒฝ์ฐ์ ์ ๊ณต์์ ์ฌ์ฉํ์ฌ ํ์๋ค.
์ฒ์์ ๊ธธ์ 0์ผ๋ก ์ด๊ธฐํํ๊ณ ํ์๋๋ ์ ๋ฉ์ด ์ฒ๋ฆฌ๊ฐ ๋ณต์กํ๋ค.
๊ทธ๋์ ๊ธธ์ -1๋ก ์ด๊ธฐํํ๊ณ ์ ๋ฉ์ด๋ 0์ผ๋ก ์ค์ ํ๋ ์ฒ๋ฆฌ๊ฐ ํจ์ฌ ๊ฐ๋จํด์ก๋ค.
์ ๋ฉ์ด๋ฅผ ๋ฐ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ ๋ณด๋ค ๊ธธ๋ง ์ฒ๋ฆฌํ๋ ๊ฒ์ด ํจ์ฌ ์ฝ๊ณ ,
์ ๋ฉ์ด๋ฅผ 0์ผ๋ก ์ค์ ํด๋๋ฉด ์ ๋ฉ์ด ์นธ์ ์ง๋๋ ๊ฒฝ๋ก๋ฅผ ๋ง์๋ ๊ฒ๊ณผ ๊ฐ์ ํจ๊ณผ๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค.
'๐ฅ๏ธ Study Note > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] level.3 - ์ง๊ฒ๋ค๋ฆฌ ๊ฑด๋๊ธฐ (C++) (0) | 2023.05.12 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค / level.3 / ์ ๊ตญ์ฌ์ฌ(C++) (0) | 2023.05.11 |
[๋ฐฑ์ค] 2775๋ฒ : ๋ถ๋ ํ์ฅ์ด ๋ ํ ์ผ(C++) (0) | 2023.05.08 |
ํ๋ก๊ทธ๋๋จธ์ค / level.1 / ์ฒด์ก๋ณต(C++) (0) | 2023.05.07 |
ํ๋ก๊ทธ๋๋จธ์ค / level.1 / ๋๋จธ์ง๊ฐ 1์ด ๋๋ ์ ์ฐพ๊ธฐ(C++) (0) | 2023.05.06 |