#include <string>
#include <iostream>
#include <unordered_map>
using namespace std;
char d[4] = {'U', 'D', 'L', 'R'};
int dx[4] = {0, 0, -1, 1};
int dy[4] = {1, -1, 0, 0};
int calc(int x, int y)
{
return (x + 5) + ((y + 5) * 11);
}
bool check(int x, int y)
{
if ((x >= -5) && (x <= 5) && (y >= -5) && (y <= 5))
return true;
else
return false;
}
int solution(string dirs)
{
int answer = 0;
unordered_map<int, unordered_map<int, bool>> umap;
int curX = 0, curY = 0;
for (int i = 0; i < (int)dirs.size(); ++i)
{
char& c = dirs[i];
for (int j = 0; j < 4; ++j)
{
if (c == d[j])
{
if (check(curX + dx[j], curY + dy[j]))
{
int nX = curX + dx[j];
int nY = curY + dy[j];
int src = calc(curX, curY);
int dest = calc(nX, nY);
if (umap.find(src) == umap.end())
umap[src] = unordered_map<int, bool>();
if ((umap[src].find(dest) == umap[src].end()) || umap[src][dest] == false)
{
umap[src][dest] = true;
answer++;
cout << "명령: " << c << endl;
cout << "현재 좌표: (" << curX << " " << curY << ")" << endl;
cout << "나중 좌표: (" << nX << " " << nY << ")" << endl;
cout << "1증가 시켰음! " << answer << endl;
}
curX = nX;
curY = nY;
}
}
}
}
return answer;
}
int main(void)
{
string a = "LLLLRLRLRLL";
cout << solution(a);
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNoYXIgZFs0XSA9IHsnVScsICdEJywgJ0wnLCAnUid9OwoKaW50IGR4WzRdID0gezAsIDAsIC0xLCAxfTsKaW50IGR5WzRdID0gezEsIC0xLCAwLCAwfTsKCmludCBjYWxjKGludCB4LCBpbnQgeSkKewogICAgcmV0dXJuICh4ICsgNSkgKyAoKHkgKyA1KSAqIDExKTsKfQoKYm9vbCBjaGVjayhpbnQgeCwgaW50IHkpCnsKICAgIGlmICgoeCA+PSAtNSkgJiYgKHggPD0gNSkgJiYgKHkgPj0gLTUpICYmICh5IDw9IDUpKQogICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIAogICAgZWxzZQogICAgICAgIHJldHVybiBmYWxzZTsKfQoKaW50IHNvbHV0aW9uKHN0cmluZyBkaXJzKQp7CiAgICBpbnQgYW5zd2VyID0gMDsKICAgIHVub3JkZXJlZF9tYXA8aW50LCB1bm9yZGVyZWRfbWFwPGludCwgYm9vbD4+IHVtYXA7CiAgICAKICAgIGludCBjdXJYID0gMCwgY3VyWSA9IDA7CiAgICAKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKGludClkaXJzLnNpemUoKTsgKytpKQogICAgewogICAgICAgIGNoYXImIGMgPSBkaXJzW2ldOwogICAgICAgIAogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgNDsgKytqKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKGMgPT0gZFtqXSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYgKGNoZWNrKGN1clggKyBkeFtqXSwgY3VyWSArIGR5W2pdKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpbnQgblggPSBjdXJYICsgZHhbal07CiAgICAgICAgICAgICAgICAgICAgaW50IG5ZID0gY3VyWSArIGR5W2pdOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGludCBzcmMgPSBjYWxjKGN1clgsIGN1clkpOwogICAgICAgICAgICAgICAgICAgIGludCBkZXN0ID0gY2FsYyhuWCwgblkpOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGlmICh1bWFwLmZpbmQoc3JjKSA9PSB1bWFwLmVuZCgpKQogICAgICAgICAgICAgICAgICAgICAgICB1bWFwW3NyY10gPSB1bm9yZGVyZWRfbWFwPGludCwgYm9vbD4oKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGlmICgodW1hcFtzcmNdLmZpbmQoZGVzdCkgPT0gdW1hcFtzcmNdLmVuZCgpKSB8fCB1bWFwW3NyY11bZGVzdF0gPT0gZmFsc2UpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICB1bWFwW3NyY11bZGVzdF0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBhbnN3ZXIrKzsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGNvdXQgPDwgIuuqheuguTogIiA8PCBjIDw8IGVuZGw7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvdXQgPDwgIu2YhOyerCDsooztkZw6ICgiIDw8IGN1clggPDwgIiAiIDw8IGN1clkgPDwgIikiIDw8IGVuZGw7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvdXQgPDwgIuuCmOykkSDsooztkZw6ICgiIDw8IG5YIDw8ICIgIiA8PCBuWSA8PCAiKSIgPDwgZW5kbDsKICAgICAgICAgICAgICAgICAgICAgICAgY291dCA8PCAiMeymneqwgCDsi5zsvLDsnYwhICIgPDwgYW5zd2VyIDw8IGVuZGw7CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBjdXJYID0gblg7CiAgICAgICAgICAgICAgICAgICAgY3VyWSA9IG5ZOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgCiAgICByZXR1cm4gYW5zd2VyOwp9CgppbnQgbWFpbih2b2lkKQp7CglzdHJpbmcgYSA9ICJMTExMUkxSTFJMTCI7CgkKCWNvdXQgPDwgc29sdXRpb24oYSk7Cn0=