# TCS NextStep Programming Questions and Answers 2023: FAQ, Expected Q/A, & More

## TCS NextStep Programming Questions and Answers 2023 | TCS NextStep Logic Programming Questions | TCS NextStep Advanced Coding Questions & Answers | TCS NextStep Programming Questions With Explanation

TCS NextStep Programming Questions and Answers 2023 | TCS NextStep Advanced Programming Questions: Here we have briefly discussed the TCS NextStep Programming Questions and Answers. The candidates who are planning to appear for the exam must have complete knowledge of the exam pattern and all the important topics from the syllabus. This can be achieved by solving the TCS NextStep Previous Year’s Papers. After you are done going through the syllabus, you must solve the previous year’s papers. This will help you to get an understanding of your current level of exam preparation. You will also know how much effort you need to put into the preparation. So that you can utilize the last days of your exam in the most efficient manner. Like any other company, TCS NextStep has 04 rounds to select suitable candidates. We are going to talk in detail about each round. For like this more upcoming private jobs click here

RecruiterTata Consultancy Services (TCS)
DesignationTCS NextStep
Vacancies/PostMultiple

### TCS NextStep Programming Test Questions with Solutions

Question: Problem Statement

Alex works at a clothing store. There is a large pile of socks that must be paired by color for sale. Given an array of integers representing the color of each sock, determine how many pairs of socks with matching colors there are.

For example, there are n=7 socks with colors ar = {1,2,1,2,1,3,2}. There is one pair of color 1 and one of color 2. There are three odd socks left, one of each color. The number of pairs is 2.

Function Description
Complete the sockMerchant function in the editor below. It must return an integer representing the number of matching pairs of socks that are available.
sockMerchant has the following parameter(s):
n: the number of socks in the pile
ar: the colors of each sock

Input Format
The first line contains an integer n, the number of socks represented in ar.
The second line contains n space-separated integers describing the colors ar[i] of the socks in the pile.

Constraints
1 <= n <= 100
1 <= ar[i] <= 100 & 0 <= i < n

Output Format
Return the total number of matching pairs of socks that Alex can sell.

Sample Input
9
10 20 20 10 10 30 50 10 20
Sample Output
3

Explanation
Alex can match 3 pairs of socks i.e 10-10, 10-10, 20-20
while the left out socks are 50, 60, 20

C PROGRAM

#include<stdio.h>

int sockMerchant(int n, int arr[])
{
int freq[101]={0};
int ans = 0,i;
for(i=0;i<n;i++)
freq[arr[i]]++;
for(i = 0; i <= 100; i++)
{
ans = ans+ freq[i]/2;
}
return ans;
}
int main ()
{
int n;
scanf("%d",&n);
int arr[101],i;
for (i = 0; i < n; i++)
{
scanf("%d",&arr[i]);
}

int ans=sockMerchant(n,arr);
printf("%d\n",ans);
return 0;
}
C++ PROGRAM
#include<bits/stdc++.h>
using namespace std;
int sockMerchant(int n, int arr[])
{
int freq[101]={0};
int ans = 0;
for(int i=0;i<n;i++)
{
int value=arr[i];
freq[value]++;
}
for(int i = 0; i <= 100; i++)
{
ans = ans+ freq[i]/2;
}

return ans;
}
int main ()
{
int n;
cin >> n;
int arr[n]={0};
for (int i = 0; i < n; i++)
{
cin>>arr[i];
}
int res=sockMerchant(n,arr);
cout<<res<<endl;
return 0;
}
JAVA PROGRAM
import java.util.*;
class Main
{
public static int sockMerchant(int n, int arr[])
{
int freq[]=new int[101];
for(int i=0;i<n;i++)
{
freq[arr[i]]++;
}
int ans=0;
for(int i=0;i<=100;i++)
ans=ans+freq[i]/2;
return ans;
}
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int arr[]=new int[n];
for(int i=0;i<n;i++)
arr[i]=sc.nextInt();
int ans=sockMerchant(n,arr);
System.out.println(ans);

}
}
PYTHON PROGRAM
def sockMerchant(n, ar):
pairs = 0
set_ar = set(ar)
for i in set_ar:
count = ar.count(i)
pairs+=count//2
return pairs

n = int(input())
ar = list(map(int, input().split()))
print(sockMerchant(n, ar))

#### Question: Counting Valleys

Problem Statement

Gary is an avid hiker. He tracks his hikes meticulously, paying close attention to small details like topography. During his last hike, he took exactly n steps. For every step he took, he noted if it was an uphill or a downhill step. Gary’s hikes start and end at sea level. We define the following terms:

• A mountain is a non-empty sequence of consecutive steps above sea level, starting with a step up from sea level and ending with a step down to sea level.
• A valley is a non-empty sequence of consecutive steps below sea level, starting with a step down from sea level and ending with a step up to sea level.

Given Gary’s sequence of up and down steps during his last hike, find and print the number of valleys he walked through.

Input Format

The first line contains an integer, , denoting the number of steps in Gary’s hike.

The second line contains a single string of characters. Each character belongs to {U, D} (where U indicates a step up and D indicates a step down), and the i(th) cin the string describes Gary’s i(th) step during the hike.

Constraints

• 2 <= N <= 10^6

Output Format

Print a single integer denoting the number of valleys Gary walked through during his hike.

Sample Input

8

UDDDUDUU

Sample Output

1

Explanation

If we represent _ as sea level, a step up as / , and a step down as \ , Gary’s hike can be drawn as:

_/\      _

\    /

\/\/

It’s clear that there is only one valley there, so we print on a new line.

C PROGRAM
#include
#include
int countingValley(long int steps, char *path)
{
long int i, level = 0, valley = 0;
for(i=0; i<steps; i++)
{
if(path[i] == 'U')
{
level++;
}
else if(path[i] == 'D')
{
if(level == 1)
{
valley++;
}
level--;
}
}
return valley;
}
int main()
{
long int steps;
scanf("%li",&steps);
char path[steps];
int i, result;
for(i=0; i<steps; i++)
{
scanf("%c",&path[i]);
}
result = countingValley(steps, path);
printf("%d",result);
return 0;
}
JAVA PROGRAM
#include<bits/stdc++.h>
using namespace std;
int countingValley(long int steps, char *path)
{
long int i, level = 0, valley = 0;
for(i=0; i<steps; i++)
{
if(path[i] == 'U')
{
level++;
}
else if(path[i] == 'D')
{
if(level == 1)
{
valley++;
}
level--;
}
}
return valley;
}
int main()
{
long int steps;
cin>>steps;
char path[steps];
int i, result;
for(i=0; i<steps; i++)
{
cin>>path[i];
}
result = countingValley(steps, path);
cout<<result;
return 0;
}
PYTHON PROGRAM
def countingValley(steps, path):
level = valley = 0
for i in path:
if i == 'U':
level += 1
elif i == 'D':
if level == 1:
valley += 1
level -= 1
return valley

steps = int(input())
path = input()
print(countingValley(steps, path))

#### Question:  Left Rotation

Problem Statement

A left rotation operation on an array shifts each of the array’s elements unit to the left. For example, if 2 left rotations are performed on array [1, 2, 3, 4, 5], then the array would become [3, 4, 5, 1, 2].

Given an array of integers and a number, , perform left rotations on the array. Return the updated array to be printed as a single line of space-separated integers.

Function Description

Complete the function rotLeft in the editor below. It should return the resulting array of integers.

rotLeft has the following parameter(s):

• An array of integers .
• An integer , the number of rotations.

Input Format

The first line contains two space-separated integers and , the size of and the number of left rotations you must perform.

The second line contains space-separated integers a[i].

Constraints

• 1 <= n <= 10^5
• 1 <= d <= n
• 1 <= a[i] <= 10^8

Output Format

Print a single line of space-separated integers denoting the final state of the array after performing d left rotations.

Sample Input
5 4
1 2 3 4 5

Sample Output
5 1 2 3 4

Explanation
When we perform d=4 left rotations, the array undergoes the following sequence of changes:

[1,2,3,4,5] → [2,3,4,5,1] → [3,4,5,1,2] → [4,5,1,2,3] → [5,1,2,3,4]

Test Case : 1

Input (stdin)

• 5 4
• 1 2 3 4 5

Expected Output

• 5 1 2 3 4

Test Case : 2
Input (stdin)

• 20 10
• 41 73 89 7 10 1 59 58 84 77 77 97 58 1 86 58 26 10 86 51

Expected Output

• 77 97 58 1 86 58 26 10 86 51 41 73 89 7 10 1 59 58 84 77
C PROGRAM
#include <stdio.h>
int rotLeft(int arr[], int n, int d)
{
int i, j;
int first;
for(i=0; i<d; i++)
{
first = arr[0];
for(j=0; j<n-1; j++)
{
arr[j] = arr[j+1];
}
arr[j] = first;
}
return *arr;
}
int main()
{
int n, d, i;
scanf("%d",&n);
scanf("%d",&d);
int list[n];
for(i=0; i<n; i++)
{
scanf("%d",&list[i]);
}
rotLeft(list, n, d);
for(i=0; i<n; i++)
{
printf("%d ",list[i]);
}
}
JAVA PROGRAM
import java.util.*;
class Main
{
public static void rotateLeft(int a[],int n, int d)
{
int first,i,j;
for(i=0;i<d;i++)
{
first=a[0];
for(j=0;j<n-1;j++)
a[j]=a[j+1];
a[j]=first;
}
}
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int d=sc.nextInt();
int a[]=new int[n];
for(int i=0;i<n;i++)
a[i]=sc.nextInt();

rotateLeft(a,n,d);

for(int i=0;i<n;i++)
System.out.print(a[i]+" ");
}
}
PYTHON PROGRAM
def rotateLeft(n,d,arr):
for i in range(d):
arr = rotatearr(n,arr)
return arr

def rotatearr(n, arr):
first = arr[0]
for i in range(n-1):
arr[i] = arr[i+1]
arr[n-1] = first
return arr

, d = map(int, input().split())
arr = list(map(int, input().split()))
for i in rotateLeft(n,d,arr):
print(i, end=" ")

#### Question:C Program to check if two given matrices are identical

#include<stdio.h>
#define N 4
// This function returns 1 if A[][] and B[][] are identical
// otherwise returns 0
int areSame (int A[][N], int B[][N])
{
int i, j;
for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
if (A[i][j] != B[i][j])
return 0;
return 1;
}
int main ()
{
int A[N][N] = { {1, 1, 1, 1},
{2, 2, 2, 2},
{3, 3, 3, 3},
{4, 4, 4, 4}
};
int B[N][N] = { {1, 1, 1, 1},
{2, 2, 2, 2},
{3, 3, 3, 3},
{4, 4, 4, 4}
};
if (areSame (A, B))
printf ("Matrices are identical ");
else
printf ("Matrices are not identical");
return 0;
}

#### Question:  Given a 2D array, print it in spiral form. See the following examples.

NOTE:-  Please comment down the code in other languages as well below

Input:
1    2   3   4
5    6   7   8
9   10  11  12
13  14  15  16
Output:
1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10
Input:
1   2   3   4  5   6
7   8   9  10  11  12
13  14  15 16  17  18
Output:
1 2 3 4 5 6 12 18 17 16 15 14 13 7 8 9 10 11

C++ PROGRAM

#include <bits/stdc++.h>
using namespace std;
#define R 3
#define C 6
void spiralPrint(int m, int n, int a[R][C])
{
int i, k = 0, l = 0;
/* k - starting row index
m - ending row index
l - starting column index
n - ending column index
i - iterator
*/
while (k < m && l < n) {
/* Print the first row from
the remaining rows */
for (i = l; i < n; ++i) {
cout << a[k][i] << " ";
}
k++;
/* Print the last column
from the remaining columns */
for (i = k; i < m; ++i) {
cout << a[i][n - 1] << " ";
}
n--;
/* Print the last row from
the remaining rows */
if (k < m) { for (i = n - 1; i >= l; --i) {
cout << a[m - 1][i] << " ";
}
m--;
}
/* Print the first column from
the remaining columns */
if (l < n) { for (i = m - 1; i >= k; --i) {
cout << a[i][l] << " ";
}
l++;
}
}
}
/* Driver program to test above functions */
int main()
{
int a[R][C] = { { 1, 2, 3, 4, 5, 6 },
{ 7, 8, 9, 10, 11, 12 },
{ 13, 14, 15, 16, 17, 18 } };
spiralPrint(R, C, a);
return 0;
}

PYTHON PROGRAM

def spiralOrder(arr):
ans=[]
while arr:
ans+=arr.pop(0)
arr= (list(zip(*arr)))[::-1]
return ans
arr=[[1, 2, 3, 4, 5, 6],[7, 8, 9, 10, 11, 12],[13, 14, 15, 16, 17, 18]]
print(spiralOrder(arr))

JAVA PROGRAM

// Java program to print a given matrix in spiral form
import java.io.*;
class Main
{
// Function print matrix in spiral form
static void spiralPrint (int m, int n, int a[][])
{
int i, k = 0, l = 0;
/* k - starting row index
m - ending row index
l - starting column index
n - ending column index
i - iterator
*/
while (k < m && l < n)
{
// Print the first row from the remaining rows
for (i = l; i < n; ++i)
{
System.out.print (a[k][i] + " ");
}
k++;
// Print the last column from the remaining columns
for (i = k; i < m; ++i)
{
System.out.print (a[i][n - 1] + " ");
}
n--;
// Print the last row from the remaining rows */
if (k < m)
{
for (i = n - 1; i >= l; --i)
{
System.out.print (a[m - 1][i] + " ");
}
m--;
}
// Print the first column from the remaining columns */
if (l < n)
{
for (i = m - 1; i >= k; --i)
{
System.out.print (a[i][l] + " ");
}
l++;
}
}
}
// driver program
public static void main (String[]args)
{
int R = 3;
int C = 6;
int a[][] = { {1, 2, 3, 4, 5, 6},
{7, 8, 9, 10, 11, 12},
{13, 14, 15, 16, 17, 18}
};
spiralPrint (R, C, a);
}
}

#### Question:  A Pythagorean triplet is a set of three integers a, b and c such that a2 + b2 = c2. Given a limit, generate all Pythagorean Triples with values smaller than given limit.

Input : limit = 20
Output : 3 4 5
8 6 10
5 12 13
15 8 17
12 16 20

Simple Solution is to generate these triplets smaller than given limit using three nested loop. For every triplet, check if Pythagorean condition is true, if true, then print the triplet. Time complexity of this solution is O(limit3) where ‘limit’ is given limit.

An Efficient Solution can print all triplets in O(k) time where k is number of triplets printed. The idea is to use square sum relation of Pythagorean triplet, i.e., addition of squares of a and b is equal to square of c, we can write these number in terms of m and n such that,

a = m2 - n2
b = 2 * m * n
c  = m2 + n2
because,
a2 = m4 + n4 – 2 * m2 * n2
b2 = 4 * m2 * n2
c2 = m4 + n4 + 2* m2 * n2

We can see that a2 + b2 = c2, so instead of iterating for a, b and c we can iterate for m and n and can generate these triplets

JAVA PROGRAM

import java.util.*;
class Main
{
public static void pythagoreanTriplets(int limit)
{
int a,b,c=0;
int m=2;
while(c<limit)
{
for(int n=1;n<m;++n)
{
a=m*m-n*n;
b=2*m*n;
c=m*m+n*n;
if(c>limit)
break;
System.out.println(a+" "+b+" "+c);
}
m++;
}
}
public static void main(String[] args)
{
int limit=20;
pythagoreanTriplets(limit);
}
}

PYTHON PROGRAM

def pythagoreanTriplets(limit):
a = b = c = 0
m = 2
while True:
for n in range(1,m+1):
a = m*m - n*n
b = 2*m*n
c = m*m + n*n
if c > limit:
break
if a==0 or b==0 or c==0:
break
print(a,b,c)
m=m+1

limit = int(input())
pythagoreanTriplets(limit)

***BEST OFF LUCK***

We hope the above-mentioned information regarding Previous Year Paper will be helpful for the candidates. Download the papers and practice the different types of questions asked in the exam. You can also start preparing yourself for all types of Private Jobs, Bank Jobs, Government & Other exams and get quicker access to any required information through our Naukrimessenger.com. The article also provides the latest information and updates regarding ongoing recruitment processes. Bookmark our website now and ace your exam preparations! To avail of exclusive job offers, join our Telegram Channel page

Important Details