코딩 테스트/백준 알고리즘 코딩 테스트
상하좌우 : 문제 조건
ingus kinematics
2022. 10. 30. 16:20
https://velog.io/@ch9eri/%EA%B5%AC%ED%98%84-%EC%83%81%ED%95%98%EC%A2%8C%EC%9A%B0
[구현] 상하좌우 예제 / 백준 16926 배열돌리기
https://media.vlpt.us/images/suzieep/post/7de8ffd0-d536-4fbe-b5a5-f5fb4ce13258/image.png!\[](https://images.velog.io/images/ch9eri/post/a069
velog.io
#include <iostream>
using namespace std;
enum MOVE{
MOVE_LEFT,
MOVE_UP,
MOVE_RIGHT,
MOVE_DOWN,
};
int main()
{
// 왼, 위, 오, 아
int dx[4] = {0, -1, 0, 1};
int dy[4] = {-1, 0, 1, 0};
int N = 0;
cin >> N;
string plans;
cin.ignore(); // 버퍼 비우기
getline(cin, plans);
cout << "plans = " << plans << endl;
cout << "plans.length() = " << plans.length() << endl;
int cur_x = 0, cur_y = 0;
// Move
for(int i=0; i<plans.length(); i++)
{
if(i % 2 == 0)
{
if(plans[i] == 'L')
{
cur_x += dx[MOVE_LEFT];
cur_y += dy[MOVE_LEFT];
}
else if(plans[i] == 'U')
{
cur_x += dx[MOVE_UP];
cur_y += dy[MOVE_UP];
}
else if(plans[i] == 'R')
{
cur_x += dx[MOVE_RIGHT];
cur_y += dy[MOVE_RIGHT];
}
else if(plans[i] == 'D')
{
cur_x += dx[MOVE_DOWN];
cur_y += dy[MOVE_DOWN];
}
// Limit - X
if(cur_x < 0)
cur_x = 0;
else if(cur_x > N)
cur_x = N-1;
if(cur_y < 0)
cur_y = 0;
else if(cur_y > N)
cur_y = N-1;
}
}
cout << "==================" << endl;
cout << "cur_x = " << (cur_x + 1) << endl;
cout << "cur_y = " << (cur_y + 1) << endl;
return 0;
}