๋ฌธ์
- ๋จผ์ ๋ฑ์ ๋ชธ๊ธธ์ด๋ฅผ ๋๋ ค ๋จธ๋ฆฌ๋ฅผ ๋ค์์นธ์ ์์น์ํจ๋ค.
- ๋ง์ฝ ์ด๋ํ ์นธ์ ์ฌ๊ณผ๊ฐ ์๋ค๋ฉด, ๊ทธ ์นธ์ ์๋ ์ฌ๊ณผ๊ฐ ์์ด์ง๊ณ ๊ผฌ๋ฆฌ๋ ์์ง์ด์ง ์๋๋ค.
- ๋ง์ฝ ์ด๋ํ ์นธ์ ์ฌ๊ณผ๊ฐ ์๋ค๋ฉด, ๋ชธ๊ธธ์ด๋ฅผ ์ค์ฌ์ ๊ผฌ๋ฆฌ๊ฐ ์์นํ ์นธ์ ๋น์์ค๋ค. ์ฆ, ๋ชธ๊ธธ์ด๋ ๋ณํ์ง ์๋๋ค.
์ฌ๊ณผ์ ์์น์ ๋ฑ์ ์ด๋๊ฒฝ๋ก๊ฐ ์ฃผ์ด์ง ๋ ์ด ๊ฒ์์ด ๋ช ์ด์ ๋๋๋์ง ๊ณ์ฐํ๋ผ.
*์ฒ์ ๋ดค์๋ ํด์ ๊ดํ ๊ฐ๋ ์ด ์ ์์ฑ๋์ง ์์๋๋ฐ ํด์ ๋ฌด์กฐ๊ฑด ํ๋ฒ๋ง ์คํ๋๋ ์์คํ ์ด๋ค.
์ ๋ ฅ 1
6
3
3 4
2 5
5 3
3
3 D
15 L
17 D
์ถ๋ ฅ 1
9
์ ๋ ฅ 2
10
4
1 2
1 3
1 4
1 5
4
8 D
10 D
11 D
13 L
์ถ๋ ฅ 2
21
์ ๋ ฅ 3
10
5
1 5
1 3
1 2
1 6
1 7
4
8 D
10 D
11 D
13 L
์ถ๋ ฅ 3
13
์ฝ๋
#include<iostream>
//#include<Windows.h>
#include<deque>
#include<vector>
using namespace std;
int main() {
int N, K,L; //N : ๋ณด๋์ ํฌ๊ธฐ, K : ๋ค์ ์ค์ ์ฌ๊ณผ์ ๊ฐ์, L : ๋ฑ์ ๋ฐฉํฅ ๋ณํ ํ์
int column, row;
int currentX=0, currentY=0;
int arrIdx = 0, turnIdx=0; //arrIdx : ๋ฐฉํฅ๋ฐฐ์ด ์ธ๋ฑ์ค, turnIdx : ๋ฐฉํฅ ํ์ ๋ฐฐ์ด ์ธ๋ฑ์ค
int arrow[4][2] = { {1,0}, //์ค๋ฅธ์ชฝ
{0,1}, //์๋
{-1,0}, //์ผ์ชฝ
{0,-1} }; //์
deque<vector<int>> body;
cin >> N;
//ํด๋น ๋ฐฐ์ด๋งํผ 2์ฐจ์ ํ๋ ฌ ๋ง๋ค๊ธฐ
int** board = new int* [N];
for (int i = 0; i < N; i++) {
board[i] = new int[N];
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
board[i][j] = 0;
}
}
board[0][0] = 1;
vector<int> point;
point.push_back(0);
point.push_back(0);
body.push_back(point);
cin >> K;
for (int i = 0; i < K; i++) {
cin >> row >> column;
board[row-1][column-1] = 2;
}
cin >> L;
int* turn = new int[L];
int* direction = new int[L];
int lValue;
char rValue;
for (int i = 0; i < L; i++) {
cin >> lValue >> rValue;
turn[i] = lValue;
direction[i] = rValue;
}
int time = 0;
while (time < 10000) {
/* {
Sleep(1000);
system("cls");
cout << "Time :" << time+1 << endl;
//์ถ๋ ฅํด์ ํ์ธํ๊ธฐ
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
cout << board[i][j] << " ";
}
printf("\n");
}
}*/
if (time == turn[turnIdx] && time != 0) {
if (direction[turnIdx] == 'D') {
arrIdx++;
}
if (direction[turnIdx] == 'L') {
arrIdx--;
}
turnIdx++;
}
if (arrIdx > 3)
arrIdx = arrIdx % 4;
if (arrIdx < 0) {
arrIdx = 4 + arrIdx;
}
//์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ๋ ๊ฒ
currentX += arrow[arrIdx][0];
currentY += arrow[arrIdx][1];
if ((currentX < 0 || currentX >= N) ||(currentY < 0 || currentY >= N))
break;
if (board[currentY][currentX] == 1)
break;
if (board[currentY][currentX] == 2) {
//๋ง์ฝ ์ฌ๊ณผ๊ฐ ์๋ค๋ฉด
point.clear();
point.push_back(currentY);
point.push_back(currentX);
body.push_front(point);
for (size_t i = 0; i < body.size(); i++) {
board[body[i][0]][body[i][1]] = 1;
}
}
else {
//๋งจ๋์ ๊ฐ์ ์๋ฆฌ๋ฅผ 0์ผ๋ก ๋ฐ๊ฟ์ฃผ๊ธฐ
board[body.back()[0]][body.back()[1]] = 0;
//์ฒ์์ ๊ฐ์ ๋ค๋ก ๋ฐ์ด์ฃผ๊ธฐ
for (size_t i = body.size() - 1; i >0 ; i--) {
int temp = body[i-1][0];
body[i][0] = temp;
temp = body[i-1][1];
body[i][1] = temp;
}
//์ฒซ๋ฒ์งธ ๋จธ๋ฆฌ์์ง์ด๊ธฐ
body[0][0]= currentY;
body[0][1]= currentX;
for (size_t i = 0; i < body.size(); i++) {
board[body[i][0]][body[i][1]] = 1;
}
}
time++;
}
cout << time + 1;
//ํ ๋น ํด์
for (int i = 0; i < N; i++)
delete[] board[i];
return 0;
}
*๊ฐ๋จํ ํด์ค*
ํด์ ๊ดํ ๊ฐ๋ ์ด ์ฒ์์ ์กํ์ง ์์์ ๋ฐ๋ณต์ ์ผ๋ก ์์ฑ๋๋ ์ค ์๊ณ ์๊ฐ์ ๋ง์ด ์ฌ์ฉํ๋ค.
Sleep(1000);
system("cls");
cout << "Time :" << time+1 << endl;
//์ถ๋ ฅํด์ ํ์ธํ๊ธฐ
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
cout << board[i][j] << " ";
}
printf("\n");
}
์ด๋ถ๋ถ์ ์ฃผ์์ฒ๋ฆฌ๋ฅผ ๋นผ๋ฉด ์ด๋ป๊ฒ ์คํ๋๋์ง ํ์ธํด๋ณผ ์ ์๋ค.
์์ ์ 3๊ฐ์ ์ถ๋ ฅ ๊ณผ์ ์ ์๋์ ๊ฐ๋ค.
0์ด ๋น์นธ์ด๊ณ 1์ ๋ฑ, 2๋ ์ฌ๊ณผ์ด๋ค.
์ฌ์ค ์ฌ๊ธฐ๊น์ง ์์ ์์ ๋ฅผ ๋ฃ์ด๋ณด์์ ๋ ์ ์ถ์ ํ๋๊น ํ๋ฆฐ๊ฒ์ผ๋ก ๋์์๋ค.
ํ ์คํธ ์ผ์ด์ค๋ฅผ ์ฌ๋ฌ๊ฐ ํด๋ณด์ง ์์์ ๊ทธ๋ฐ๋ฐ ๋ฐ๋ก ์ผ์ด์ค๋ฅผ ๋ชจ์๋์ ์ฌ์ดํธ๋ฅผ ์ฐพ์๋ค.
https://www.acmicpc.net/board/view/56469
๊ธ ์ฝ๊ธฐ - ๋ฑ ๋ฌธ์ ๋ฐ๋ก๋ชจ์์ ๋๋ค
๋๊ธ์ ์์ฑํ๋ ค๋ฉด ๋ก๊ทธ์ธํด์ผ ํฉ๋๋ค.
www.acmicpc.net
๋์ ๊ฒฝ์ฐ ๋งจ ์ฒ์ ๋ฐ๋ก ์ผ์ด์ค์ 5๋ฒ์งธ๊น์ง ํต๊ณผ๋ฅผ ํ๋ ํต๊ณผ๋ฅผ ํ ์ ์์๋ค.
๋ค๋ฅธ ๋ถ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฐพ์๋ณด๋ ์ด๋ถ๊บผ๊ฐ ๊น๋ํ๊ฒ ์ ๋ฆฌ๋์ด ์์๋ค.
๋ด ์ฝ๋๋ for๋ฌธ์ ๋ง์ด ์ฐ๋๋ฐ for๋ฌธ์ ๋ง์ด ์ฐ์ง ์๋๋ก ์๊ฐํ๋ ํ์ ์ข ๋ ๊ธธ๋ฌ์ผ๊ฒ ๋ค.
https://velog.io/@nacean/%EB%B0%B1%EC%A4%803190-%EB%B1%80-C-%ED%92%80%EC%9D%B4
๋ฐฑ์ค[3190] ๋ฑ C++ ํ์ด
์๋ฎฌ๋ ์ด์ ์ ๊ตฌํํ ์ค ์๋คํ๋ฅผ ์ฌ์ฉํ ์ค ์๋ค๋ฑ์ ๋ชธํต์ ์ฒ์๊ณผ ๋์ ์ ์ฅํด์ฃผ๊ธฐ ์ํด queue๋ฅผ ์ฌ์ฉํ๋ค๋ฐฐ์ด์ ๋ง๋ค์ด ์๊ฐ๋ง๋ค ๋ฐฐ์ด์ ์ฑํฌํ์ฌ, D ํน์ L์ผ ๊ฒฝ์ฐ ๋ฐฉํฅ ํ์ ์ ํ๋คwhile๋ฌธ์
velog.io
*์ด ๋ฐฉ๋ฒ๋ง์ด ๋ง๋ ์ ๋ต์ ์๋๋๋ค.
ํจ์ฌ ์ข๊ณ ๋น ๋ฅธ ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ ์ ์์ต๋๋ค.
์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถํ์๋ ๋ถ๋ค ํ์ดํ ! '0'/*
'์๊ณ ๋ฆฌ์ฆ > BaekJoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++] BOJ 2933๋ฒ: ๋ฏธ๋ค๋ (0) | 2022.06.13 |
---|---|
[C++] BOJ 1655๋ฒ: ๊ฐ์ด๋ฐ๋ฅผ ๋งํด์ (0) | 2022.06.08 |
[C++] BOJ 2480๋ฒ: ์ฃผ์ฌ์ ์ธ๊ฐ (0) | 2022.03.19 |
[C++] BOJ 1260๋ฒ: DFS์ BFS (2) | 2022.03.11 |
[C++] BOJ 10845๋ฒ: ํ (0) | 2022.01.18 |