๋ฌธ์ ๋งํฌ
https://school.programmers.co.kr/learn/courses/30/lessons/62050
๋ชจ๋ ์นธ์ ๋ฐฉ๋ฌธํ๊ธฐ ์ํ ์ฌ๋ค๋ฆฌ ์ค์น ๋น์ฉ์ ์ต์๊ฐ์ ๋ฆฌํดํด์ฃผ์.
ํ์ด
๋ชจ๋ ์นธ์์ ์ํ์ข์ฐ๋ก ์ด๋ํ ์ ์์ผ๋ฉฐ ๋์ด ์ฐจ๊ฐ ์ฃผ์ด์ง height ๊ฐ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ผ๋ฉด ๊ทธ๋ฅ ์ด๋ํ ์ ์์ง๋ง ๋์ด ์ฐจ๊ฐ height ๋ณด๋ค ํฌ๋ค๋ฉด ๋์ด ์ฐจ์ด๋งํผ์ ๋น์ฉ์ ๋ด๊ณ ์ฌ๋ค๋ฆฌ๋ฅผ ์ค์นํด์ผํ๋ค.
๊ฐ ์นธ์ ์ ์ ์ผ๋ก ๋ดค์ ๋, ๋ชจ๋ ์ ์ ์ ์ด์ด์ง๋๋ก ํ๋ ๊ธธ์ ์ฐพ์์ผํ๋ค๋ ๋ป์ด๋ค. ์์์ ์นธ์ ๊ธฐ์ค์ผ๋ก ์ํ์ข์ฐ ์นธ์ผ๋ก ๊ฐ์ ์ด ์ด์ด์ ธ์๋ค๊ณ ์๊ฐํด๋ณด๋ฉด, ๋์ด์ฐจ๊ฐ height ์ดํ๋ฉด ๊ฐ์ ์ ๊ฐ์ค์น๊ฐ 0์ด๊ณ height๋ณด๋ค ํฌ๋ฉด ๋์ด ์ฐจ ๋งํผ์ ๊ฐ์ค์น๊ฐ ๋ถ๋ ๊ฒ์ด๋ค.
์ด๋ ๊ฐ์ ์ ๊ฐ์ค์น๊ฐ ์์ ๊ฒ๋ถํฐ ์ฐจ๋ก์ฐจ๋ ์ด๋ํ๋ฉด์ ๋ชจ๋ ์ ์ ์ ๋ฐฉ๋ฌธํ๋๋ก ํ๋ฉด ๋๋ค.
์์์ ์ ์ด๋๋ ์๊ด์๋ค๊ณ ํ์ง๋ง, ๋ชจ๋ ์นธ์ ์ด์ด์ผํ๊ธฐ ๋๋ฌธ์ ์ฌ์ค ์ด๋์ ์ถ๋ฐํ๋ ์๊ด์ด ์๋ค.
๋๋ ํธ์์ ๋งจ ์ผ์ชฝ ๋งจ ์์นธ (0, 0)์ ์์์ ์ผ๋ก ์ค์ ํด์ฃผ์๋ค.
(0,0)์ผ๋ก ์์ํด์ ์ธ์ ํ ์นธ๊ณผ์ ๊ฐ์ ์ ์ฐ์ ์์ ํ์ ์ง์ด๋ฃ๋๋ค. ์ด๋ ์ ๋ ฌ๊ธฐ์ค์ ์ค๋ฆ์ฐจ์์ผ๋ก ํด์ ๊ฐ์ ์ ๋น์ฉ์ด ์์ ๊ฒ๋ถํฐ ๊บผ๋ผ ์ ์๋๋ก ํ๋ค.
์ด๋ฏธ ๋ฐฉ๋ฌธํ ์นธ์ ์คํตํด์ฃผ๊ณ ๋ฐฉ๋ฌธํ์ง ์์ ์นธ์ด๋ผ๋ฉด ์ํ์ข์ฐ ์ธ์ ํ ์นธ๊ณผ์ ๊ฐ์ ์ ์ฐ์ ์์ํ์ ๊ณ์ํด์ ๋ฃ์ด์ค๋ค.
์ฝ๋ ์์ฑ
|
#include <bits/stdc++.h>
using namespace std;
int dx[] = {0,1,0,-1};
int dy[] = {-1,0,1,0};
bool is_ok(pair<int,int> pos, const int& N){
if(pos.first < 0 || pos.first >= N || pos.second < 0 || pos.second >= N)
return false;
return true;
}
int solution(vector<vector<int>> land, int height) {
int answer = 0;
int N = land.size();
bool visited[301][301];
memset(visited,false,sizeof(visited));
priority_queue<pair<int, pair<int,int>>> pq;
pq.push({0, {0,0}});
while(!pq.empty()){
pair<int,int> now = pq.top().second;
int cost = -pq.top().first;
pq.pop();
if(visited[now.first][now.second])
continue;
visited[now.first][now.second] = true;
answer += cost;
for(int i = 0; i<4; i++){
pair<int,int> next = {now.first + dy[i], now.second + dx[i]};
if(!is_ok(next, N))
continue;
int acost = 0;
if(abs(land[now.first][now.second] - land[next.first][next.second]) > height)
acost = abs(land[now.first][now.second] - land[next.first][next.second]);
pq.push({-acost,next});
}
}
return answer;
}
|
cs |
๋๋ BFS๋ฅผ ์ด์ฉํด์ ๋ชจ๋ ์นธ์ ๋ฐฉ๋ฌธํ๋ ๊ฒ์ผ๋ก ํ์ง๋ง, ์ต์ ์คํจ๋ ํธ๋ฆฌ๋ฅผ ์ด์ฉํด์ ๋ชจ๋ ์ ์ ์ ์๋ ํธ๋ฆฌ๋ฅผ ๋ง๋ค์ด๋ ๋ ๊ฒ ๊ฐ๋ค.
'ํ๋ก๊ทธ๋๋จธ์ค > 4๋จ๊ณ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค Lv4] : ๋ฌด์ง์ ๋จน๋ฐฉ ๋ผ์ด๋ธ (0) | 2022.07.13 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค Lv4] : ๊ฐ์ฌ ๊ฒ์ (0) | 2022.07.12 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv4] : ๋จ์ด ํผ์ฆ (0) | 2022.07.11 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv4] : ๋๋์ง (0) | 2022.06.29 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv4] : ์ง๊ฒ๋ค๋ฆฌ (0) | 2022.06.21 |