 Open in App
Not now

# Final cell position in the matrix

• Difficulty Level : Easy
• Last Updated : 01 Sep, 2022

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)

Implementation:

## 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`

## Python3

 `# Python3 implementation to find``# the final cell position``# in the given matrix` `# function to find the``# final cell position``# in the given matrix``def` `finalPos(command, n, x, y):``    ` `    ``cup ``=` `0``    ``cdown ``=` `0``    ``cleft ``=` `0``    ``cright ``=` `0``;``  ` `    ``# traverse the command array``    ``for` `i ``in` `range``(n):``    ` `        ``if` `(command[i] ``=``=` `'U'``):``            ``cup``+``=``1``        ``elif` `(command[i] ``=``=` `'D'``):``            ``cdown ``+``=` `1``        ``elif` `(command[i]``=``=` `'L'``):``            ``cleft ``+``=` `1``        ``elif` `(command[i] ``=``=` `'R'``):``            ``cright ``+``=` `1``    ` `  ` `    ``# calculate final values``    ``final_x ``=` `x ``+` `(cright ``-` `cleft);``    ``final_y ``=` `y ``+` `(cdown ``-` `cup);``  ` `    ``print``(``"Final Position:"``, ``"("``, final_x, ``","``, final_y, ``")"``);`` ` `# driver code``command ``=` `"DDLRULL"``;``n ``=` `len``(command);``x ``=` `3``y ``=` `4``;``finalPos(command, n, x, y);`` ` `# This code is contributed by phasing17`

## 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)`

Complexity Analysis:

• Time Complexity: O(n), where is the number of commands.
• Space complexity: O(1) since using constant variables

My Personal Notes arrow_drop_up