๋ฌธ์
์ฝ๋
#include <string>
#include <vector>
#include <map>
using namespace std;
bool range_check(int x, int y){
if(x>5||y>5||x<-5||y<-5) return false;
return true;
}
int solution(string dirs) {
map<vector<int>,int>check;
int answer = 0;
int x=0,y=0;
for(int i=0; i<dirs.length(); i++){
char dir = dirs[i];
if(dir=='R'){
if(range_check(x+1,y)){
vector<int> temp1{x,y,x+1,y};
vector<int> temp2{x+1,y,x,y};
if(check[temp1]==0&&check[temp2]==0) answer++;
check[temp1]++;
check[temp2]++;
x+=1;
}
}
if(dir=='L'){
if(range_check(x-1,y)){
vector<int> temp1{x,y,x-1,y};
vector<int> temp2{x-1,y,x,y};
if(check[temp1]==0&&check[temp2]==0) answer++;
check[temp1]++;
check[temp2]++;
x-=1;
}
}
if(dir=='D'){
if(range_check(x,y-1)){
vector<int> temp1{x,y,x,y-1};
vector<int> temp2{x,y-1,x,y};
if(check[temp1]==0&&check[temp2]==0) answer++;
check[temp1]++;
check[temp2]++;
y-=1;
}
}
if(dir=='U'){
if(range_check(x,y+1)){
vector<int> temp1{x,y,x,y+1};
vector<int> temp2{x,y+1,x,y};
if(check[temp1]==0&&check[temp2]==0) answer++;
check[temp1]++;
check[temp2]++;
y+=1;
}
}
}
return answer;
}
ํ์ด
์ด ๋ฌธ์ ์ ํต์ฌ์ ๋ฐฉํฅ์ฑ์ด ์๋ค๋ ๊ฒ์ ๋๋ค. ์ฆ (-1,0)์์ (0,0)์ผ๋ก ํ์ดํ์ (0,0)์์ (-1,0)์ผ๋ก์ ํ์ดํ๊ฐ ๊ฐ๋ค๋ ์๋ฏธ์ธ๋ฐ ๋ง์ฝ ์ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์ง ์๋๋ค๋ฉด ํ ์คํธ์ผ์ด์ค 8๋ฒ๋ถํฐ ์ญ ์ค๋ต์ฒ๋ฆฌ๊ฐ ๋ฉ๋๋ค.
์ ๋ map ํ ์ด๋ธ์ ํ์ฉํ์ฌ temp1, temp2์ ๊ฐ์ด ์๋ฐฉํฅ ํ์ดํ์ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ ์ฌ๋ถ๋ฅผ ํ๋จํ์ฌ ์นด์ดํฐ๋ฅผ ์ธ์ด์ ํด๊ฒฐํ์ต๋๋ค.
'Algorithm ๐ง๐ปโ๐ป > ํ๋ก๊ทธ๋๋จธ์ค(Programmers)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[c++] ํ๋ก๊ทธ๋๋จธ์ค - ๋ฐฐ๋ฌ( Level2) (0) | 2021.11.08 |
---|---|
[c++] ํ๋ก๊ทธ๋๋จธ์ค - ์ ์ผ ์์ ์ ์ ๊ฑฐํ๊ธฐ( Level1) (0) | 2021.11.08 |
[c++] ํ๋ก๊ทธ๋๋จธ์ค - ์๋ฐ์๋ฐ์๋ฐ์๋ฐ์๋ฐ์?( Level1) (0) | 2021.11.08 |
[c++] ํ๋ก๊ทธ๋๋จธ์ค - ์๋ ์ซ์ ๋ํ๊ธฐ( Level 1) (0) | 2021.11.07 |
[c++] ํ๋ก๊ทธ๋๋จธ์ค - ํธ๋ํฐ ๋ฒํธ ๊ฐ๋ฆฌ๊ธฐ( Level 1) (0) | 2021.10.23 |
[c++] ํ๋ก๊ทธ๋๋จธ์ค - ํฐ์ผ๋ชฌ( Level 2) (0) | 2021.10.23 |
๋๊ธ