Related Articles

# Final cell position in the matrix

• Difficulty Level : Easy
• Last Updated : 21 May, 2021

Given an array of list of commands U(Up), D(Down), L(Left) and R(Right) and initial cell position (x, y) in a matrix. Find the final cell position of the object in the matrix after following the given commands. It is assumed that the final required cell position exists in the matrix.
Examples

```Input : command[] = "DDLRULL"
x = 3, y = 4
Output : (1, 5)

Input : command[] = "LLRUUUDRRDDDULRLLUDUUR"
x = 6, y = 5
Output : (6, 3)```

Approach: Following are the steps:

1. Count cup, cdown, cleft and cright for U(Up), D(Down), L(Left) and R(Right) movements respectively.
2. Calculate final_x = x + (cright – cleft) and final_y = y + (cdown – cup).

The final cell position is (final_x, final_y)

## C++

 `// C++ implementation to find the final cell position``// in the given matrix``#include ` `using` `namespace` `std;` `// function to find the final cell position``// in the given matrix``void` `finalPos(``char` `command[], ``int` `n,``              ``int` `x, ``int` `y)``{``    ``// to count up, down, left and cright``    ``// movements``    ``int` `cup, cdown, cleft, cright;` `    ``// to store the final coordinate position``    ``int` `final_x, final_y;` `    ``cup = cdown = cleft = cright = 0;` `    ``// traverse the command array``    ``for` `(``int` `i = 0; i < n; i++) {``        ``if` `(command[i] == ``'U'``)``            ``cup++;``        ``else` `if` `(command[i] == ``'D'``)``            ``cdown++;``        ``else` `if` `(command[i] == ``'L'``)``            ``cleft++;``        ``else` `if` `(command[i] == ``'R'``)``            ``cright++;``    ``}` `    ``// calculate final values``    ``final_x = x + (cright - cleft);``    ``final_y = y + (cdown - cup);` `    ``cout << ``"Final Position: "``         ``<< ``"("``         ``<< final_x << ``", "` `<< final_y << ``")"``;``}` `// Driver program to test above``int` `main()``{``    ``char` `command[] = ``"DDLRULL"``;``    ``int` `n = (``sizeof``(command) / ``sizeof``(``char``)) - 1;``    ``int` `x = 3, y = 4;``    ``finalPos(command, n, x, y);``    ``return` `0;``}`

## Java

 `// Java implementation to find``// the final cell position``// in the given matrix``import` `java.util.*;``import` `java.lang.*;``import` `java.io.*;` `class` `GFG``{``// function to find the``// final cell position``// in the given matrix``static` `void` `finalPos(String command, ``int` `n,``                              ``int` `x, ``int` `y)``{``    ``// to count up, down, left``    ``// and cright movements``    ``int` `cup, cdown, cleft, cright;` `    ``// to store the final``    ``// coordinate position``    ``int` `final_x, final_y;` `    ``cup = cdown = cleft = cright = ``0``;` `    ``// traverse the command array``    ``for` `(``int` `i = ``0``; i < n; i++)``    ``{``        ``if` `(command.charAt(i) == ``'U'``)``            ``cup++;``        ``else` `if` `(command.charAt(i) == ``'D'``)``            ``cdown++;``        ``else` `if` `(command.charAt(i)== ``'L'``)``            ``cleft++;``        ``else` `if` `(command.charAt(i) == ``'R'``)``            ``cright++;``    ``}` `    ``// calculate final values``    ``final_x = x + (cright - cleft);``    ``final_y = y + (cdown - cup);` `    ``System.out.println(``"Final Position: "` `+``                       ``"("` `+ final_x + ``", "` `+``                              ``final_y + ``")"``);``}` `// Driver Code``public` `static` `void` `main(String []args)``{``    ``String command = ``"DDLRULL"``;``    ``int` `n = command.length();``    ``int` `x = ``3``, y = ``4``;``    ``finalPos(command, n, x, y);``}``}` `// This code is contributed``// by Subhadeep`

## C#

 `// C# implementation to find``// the final cell position``// in the given matrix``class` `GFG``{``// function to find the``// final cell position``// in the given matrix``static` `void` `finalPos(``string` `command, ``int` `n,``                              ``int` `x, ``int` `y)``{``    ``// to count up, down, left``    ``// and cright movements``    ``int` `cup, cdown, cleft, cright;` `    ``// to store the final``    ``// coordinate position``    ``int` `final_x, final_y;` `    ``cup = cdown = cleft = cright = 0;` `    ``// traverse the command array``    ``for` `(``int` `i = 0; i < n; i++)``    ``{``        ``if` `(command[i] == ``'U'``)``            ``cup++;``        ``else` `if` `(command[i] == ``'D'``)``            ``cdown++;``        ``else` `if` `(command[i]== ``'L'``)``            ``cleft++;``        ``else` `if` `(command[i] == ``'R'``)``            ``cright++;``    ``}` `    ``// calculate final values``    ``final_x = x + (cright - cleft);``    ``final_y = y + (cdown - cup);` `    ``System.Console.WriteLine(``"Final Position: "` `+``                             ``"("` `+ final_x + ``", "` `+``                                    ``final_y + ``")"``);``}` `// Driver Code``public` `static` `void` `Main()``{``    ``string` `command = ``"DDLRULL"``;``    ``int` `n = command.Length;``    ``int` `x = 3, y = 4;``    ``finalPos(command, n, x, y);``}``}` `// This code is contributed``// by mits`

## PHP

 `

## Javascript

 ``

Output:

`Final Position: (1, 5)`

Time Complexity: O(n), where is the number of commands.

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up