이 문제에서는 두 점(x1, y1)과 (x2, y2)를 나타내는 4개의 값 x1, y1, x2, y2가 제공됩니다. 우리의 임무는 매트릭스에서 단일 움직임을 찾는 것입니다. 한 점 (x1, y1)에서 (x2, y2)로 이동할 수 있는 방향을 찾아야 합니다. 단일 방향에 필요한 방향으로 여러 번 이동할 수 있으며 "left" , "right", "up", "down" 형식으로 방향을 반환해야 합니다. 그렇지 않으면 "불가능"을 나타내는 -1을 반환합니다.
문제를 이해하기 위해 예를 들어보겠습니다.
입력
x1 = 2, y1 = 1, x2 = 5, y1 = 1
출력
Right
솔루션 접근 방식
문제에 대한 간단한 솔루션은 소스에서 목적지에 도달하기 위해 두 좌표 x1:x2 또는 y1:y2 중 하나가 동일해야 한다는 사실을 사용하는 것입니다. 값의 경우 다음과 같습니다. -
Case 1: x1 = x2 & y1 > y2 -> Direction : Left Case 1: x1 = x2 & y2 > y1 -> Direction : Right Case 1: y1 = y2 & x1 > x2 -> Direction : Up Case 1: y1 = y2 & x2 > x1 -> Direction : Down
우리 솔루션의 작동을 설명하는 프로그램
예시
#include <iostream> using namespace std; void findSingleMovement(int x1, int y1, int x2, int y2) { if (x1 == x2 && y1 < y2) cout<<"Right"; else if (x1 == x2 && y1 > y2) cout<<"Left"; else if (y1 == y2 && x1 < x2) cout<<"Down"; else if (y1 == y2 && x1 > x2) cout<<"Up"; else cout<<"Not Possible"; } int main() { int x1, x2, y1, y2; x1 = 2; y1 = 1; x2 = 5; y2 = 1; cout<<"The direction of movement is "; findSingleMovement(x1, y1, x2, y2); return 0; }
출력
The direction of movement is Down