https://school.programmers.co.kr/learn/courses/30/lessons/49994#
๋ฌธ์ ์ค๋ช
๊ฒ์ ์บ๋ฆญํฐ๋ฅผ 4๊ฐ์ง ๋ช ๋ น์ด๋ฅผ ํตํด ์์ง์ด๋ ค ํฉ๋๋ค. ๋ช ๋ น์ด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- U: ์์ชฝ์ผ๋ก ํ ์นธ ๊ฐ๊ธฐ
- D: ์๋์ชฝ์ผ๋ก ํ ์นธ ๊ฐ๊ธฐ
- R: ์ค๋ฅธ์ชฝ์ผ๋ก ํ ์นธ ๊ฐ๊ธฐ
- L: ์ผ์ชฝ์ผ๋ก ํ ์นธ ๊ฐ๊ธฐ
์บ๋ฆญํฐ๋ ์ขํํ๋ฉด์ (0, 0) ์์น์์ ์์ํฉ๋๋ค. ์ขํํ๋ฉด์ ๊ฒฝ๊ณ๋ ์ผ์ชฝ ์(-5, 5), ์ผ์ชฝ ์๋(-5, -5), ์ค๋ฅธ์ชฝ ์(5, 5), ์ค๋ฅธ์ชฝ ์๋(5, -5)๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, "ULURRDLLU"๋ก ๋ช ๋ นํ๋ค๋ฉด
- 1๋ฒ ๋ช ๋ น์ด๋ถํฐ 7๋ฒ ๋ช ๋ น์ด๊น์ง ๋ค์๊ณผ ๊ฐ์ด ์์ง์ ๋๋ค.
- 8๋ฒ ๋ช ๋ น์ด๋ถํฐ 9๋ฒ ๋ช ๋ น์ด๊น์ง ๋ค์๊ณผ ๊ฐ์ด ์์ง์ ๋๋ค.
์ด๋, ์ฐ๋ฆฌ๋ ๊ฒ์ ์บ๋ฆญํฐ๊ฐ ์ง๋๊ฐ ๊ธธ ์ค ์บ๋ฆญํฐ๊ฐ ์ฒ์ ๊ฑธ์ด๋ณธ ๊ธธ์ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ ค๊ณ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์์ ์์์์ ๊ฒ์ ์บ๋ฆญํฐ๊ฐ ์์ง์ธ ๊ธธ์ด๋ 9์ด์ง๋ง, ์บ๋ฆญํฐ๊ฐ ์ฒ์ ๊ฑธ์ด๋ณธ ๊ธธ์ ๊ธธ์ด๋ 7์ด ๋ฉ๋๋ค. (8, 9๋ฒ ๋ช ๋ น์ด์์ ์์ง์ธ ๊ธธ์ 2, 3๋ฒ ๋ช ๋ น์ด์์ ์ด๋ฏธ ๊ฑฐ์ณ ๊ฐ ๊ธธ์ ๋๋ค)
๋จ, ์ขํํ๋ฉด์ ๊ฒฝ๊ณ๋ฅผ ๋์ด๊ฐ๋ ๋ช ๋ น์ด๋ ๋ฌด์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, "LULLLLLLU"๋ก ๋ช ๋ นํ๋ค๋ฉด
- 1๋ฒ ๋ช ๋ น์ด๋ถํฐ 6๋ฒ ๋ช ๋ น์ด๋๋ก ์์ง์ธ ํ, 7, 8๋ฒ ๋ช ๋ น์ด๋ ๋ฌด์ํฉ๋๋ค. ๋ค์ 9๋ฒ ๋ช ๋ น์ด๋๋ก ์์ง์ ๋๋ค.
์ด๋ ์บ๋ฆญํฐ๊ฐ ์ฒ์ ๊ฑธ์ด๋ณธ ๊ธธ์ ๊ธธ์ด๋ 7์ด ๋ฉ๋๋ค.
๋ช ๋ น์ด๊ฐ ๋งค๊ฐ๋ณ์ dirs๋ก ์ฃผ์ด์ง ๋, ๊ฒ์ ์บ๋ฆญํฐ๊ฐ ์ฒ์ ๊ฑธ์ด๋ณธ ๊ธธ์ ๊ธธ์ด๋ฅผ ๊ตฌํ์ฌ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
๋ด ํ์ด
๊ฐ๋ก ๊ธธ๊ณผ ์ธ๋ก ๊ธธ ๋ฐฐ์ด์ ๋ฐ๋ก ๋๊ณ ์บ๋ฆญํฐ๊ฐ ์ง๋๊ฐ ๊ธธ์ ์ฒดํฌํด์ค๋ค.
์ฃผ์ํ ์ ์ ๊ฐ๋ก ๊ธธ์ ํ๊ณผ ์ด ํฌ๊ธฐ์ ์ธ๋ก ๊ธธ์ ํ๊ณผ ์ด ํฌ๊ธฐ๊ฐ ๋ค๋ฅด๋ค๋ ๊ฒ์ด๋ค.
์ด๊ฒ๋ง ์ฃผ์ํ๋ฉด ํ์ดํ ์์ค์ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ๋ค.
#include <string>
#include <map>
#include <vector>
#include <memory.h>
#include <iostream>
using namespace std;
int solution(string dirs) {
int answer = 0;
bool row[11][10];
for(int i = 0; i < 11; ++i)
memset(row[i], false, 10 * sizeof(bool));
bool col[10][11];
for(int i = 0; i < 10; ++i)
memset(col[i], false, 11 * sizeof(bool));
map<char, vector<int>> command;
command['U'] = {0, -1};
command['D'] = {0, 1};
command['R'] = {1, 0};
command['L'] = {-1, 0};
int curX = 5, curY = 5;
for(const auto& d : dirs)
{
int nextX = curX + command[d][0];
int nextY = curY + command[d][1];
// ๋ฒ์ ๋ฐ์ ๋ฌด์
if(nextX < 0 || nextX > 10 || nextY < 0 || nextY > 10)
continue;
// ๊ธธ ๋ฐฉ๋ฌธ
switch(d)
{
case 'U':
if(!col[nextY][nextX])
{
++answer;
col[nextY][nextX] = true;
}
break;
case 'D':
if(!col[nextY-1][nextX])
{
++answer;
col[nextY-1][nextX] = true;
}
break;
case 'L':
if(!row[nextY][nextX])
{
++answer;
row[nextY][nextX] = true;
}
break;
case 'R':
if(!row[nextY][nextX-1])
{
++answer;
row[nextY][nextX-1] = true;
}
break;
}
curX = nextX;
curY = nextY;
}
return answer;
}
'๐ฅ๏ธ Study Note > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค]level.3 - ๋ค๋จ๊ณ ์นซ์ ํ๋งค (C++) (0) | 2023.09.26 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - ์ซ์ ๋ณํํ๊ธฐ (C++) (0) | 2023.09.22 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.3 - ๋ณด์ ์ผํ (C++) (0) | 2023.09.20 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.3 - ๋ฑ์ฐ์ฝ์ค ์ ํ๊ธฐ (C++) (1) | 2023.09.18 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.3 - ์๊ณผ ๋๋ (C++) (0) | 2023.09.14 |