# Algorithms Analysis and Design Concepts Hands-Ons | Accenture TFA Training Pre-Learning Modules

Disclaimer: The primary purpose of providing this solution is to assist and support anyone who are unable to complete these courses due to a technical issue or a lack of expertise. This website's information or data are solely for the purpose of knowledge and education.

Make an effort to understand these solutions and apply them to your Hands-On difficulties. (It is not advisable that copy and paste these solutions).

All Question of the Hands-On Present Below for Ease Use Ctrl + F with the question name to find the Question. All the Best!

1. Bank Ticketing System

Path: Algorithms Analysis and Design Concepts/Bank Ticketing System/Ticket.java

import java.util.*;

public class Ticket

{

public static void main (String[] args) {

Scanner sc=new Scanner(System.in);

System.out.println("Enter the number of customer takes the tickets:");

int n=sc.nextInt();

if(n>0)

{

int[] tickets=new int[n];

System.out.println("The tickets in the system are:");

for(int i=0;i<n;i++)

{

tickets[i]=i+1;

System.out.print(tickets[i]+" ");

}

System.out.println();

System.out.println("Enter the number of tickets served:");

int served=sc.nextInt();

if(served>0 && served<=n)

{

System.out.println("The served tickets are:");

for(int i=0;i<served;i++)

{

System.out.print(tickets[i]+" ");

}

System.out.println();

if(served!=n)

{

System.out.println("The unserved tickets are:");

for(int i=served;i<n;i++)

{

System.out.print(tickets[i]+" ");

}

}

else

{

System.out.println("No more tickets to be served");

}

}

}

else

{

System.out.println("Invalid Number");

}

}

}

2. Chocolate Boxes

Path: Algorithms Analysis and Design Concepts/Chocolate Boxes/Chocolate.java

import java.util.*;

public class Chocolate

{

public static void main (String[] args) {

int flag=0;

Scanner sc=new Scanner(System.in);

System.out.print("Enter the no. of boxes: ");

int n=sc.nextInt();

System.out.println();

if(n>=1 && n<=10)

{int start=0;

int[] choc=new int[n];

int temp=n;

for(int i=0;i<temp;i++)

{

System.out.print("Enter the no. of chocolates in box "+(i+1)+": ");

choc[i]=sc.nextInt();

System.out.println();

if(i==0)

{

if(choc[i]%2!=0)

{

System.out.println("Sorry!!! First box always should contain positive even no. of chocolates");

flag++;

break;

}

}

else

{

if(choc[i]%2!=0)

{

start++;

}

}

}

if(flag!=1)

{

System.out.print("No. of chocolates in each box: ");

for(int i=start;i<n;i++)

{

System.out.print(choc[i]+" ");

}

}

}

else

{

System.out.println("Invalid input");

}

}

}

3. Credit Points - STACK

Path: Algorithms Analysis and Design Concepts/Credit Points - STACK/ShopMain.java

import java.util.*;

public class ShopMain

{

public static void main (String[] args) {

Scanner sc=new Scanner(System.in);

System.out.print("Enter the no. of users:");

int n=sc.nextInt();

System.out.println();

if(n>=1 && n<=1000)

{

int[] a=new int[n];

int temp=0;

while(temp<n)

{

System.out.print("Enter the credit points for user "+(temp+1)+":");

a[temp]=sc.nextInt();

if(a[temp]>=1 && a[temp]<=100)

{

temp++;

System.out.println();

}

else

{

break;

}

}

System.out.print("Enter the no. of users to serve: ");

int k=sc.nextInt();

if(k>=1 && k<n)

{

System.out.print("The unserved user's credit points are: ");

for(int i=(k);i<n;i++)

{

System.out.print(a[i]+" ");

}

}

else if(k==n)

{

System.out.println("0 users to serve");

}

else

{

System.out.println("Invalid no. of users");

}

}

else{

System.out.println("Invalid no. of users");

}

}

}

Path: Algorithms Analysis and Design Concepts/Linked List - Recursion/ListDriver.java

import java.util.Scanner;

class ListDriver

class Node{

int data;

Node next;

Node(int d){

data=d;

next=null;

}

}

public void push(int new_data){

Node new_node=new Node(new_data);

}

int count(int search_for){

int count=0;

while(current!=null){

if(current.data==search_for)

count++;

current=current.next;

}

return count;

}

public static void main(String args[]){

ListDriver llist= new ListDriver();

Scanner l= new Scanner(System.in);

System.out.println("Enter the size of the list:");

int n= l.nextInt();

int a[]= new int[100];

if(n==0||n<0){

System.out.println("Invalid Input");}

else{

for(int i=0;i<n;i++)

{ a[i]=l.nextInt();

llist.push(a[i]);

}

System.out.println("Printing the list");

for(int i=0;i<n;i++)

{ System.out.print(a[i]+" ");}

System.out.println();

System.out.println("Enter the key to find it's occurrence:");

int x=l.nextInt();

System.out.println(x+" occurs for "+llist.count(x)+" times");

}

}

}

5. Merge Sort - Arrays

Path: Algorithms Analysis and Design Concepts/Merge Sort - Arrays/MergeSortDriver.java

import java.util.*;

class MergeSortDriver

{

public static void merge(int arr[],int l,int m,int r)

{

int n1=m-l+1;

int n2=r-m;

int L[]=new int[n1];

int R[]=new int[n2];

for (int i=0;i<n1 ;++i )

L[i]=arr[l+i];

for (int j=0;j<n2 ;++j )

R[j]=arr[m+1+j];

int i=0,j=0;

int k=l;

while(i<n1 && j<n2)

{

if (L[i]<=R[j])

{

arr[k]=L[i];

i++;

}

else

{

arr[k]=R[j];

j++;

}

k++;

}

while(i<n1)

{

arr[k]=L[i];

i++;

k++;

}

while(j<n2)

{

arr[k]=R[j];

j++;

k++;

}

}

public static void MergeSort(int arr[],int l,int r)

{

if (l<r)

{

int m=(l+r)/2;

MergeSort(arr,l,m);

MergeSort(arr,m+1,r);

merge(arr,l,m,r);

}

}

public static void printArray(int arr[])

{

int n=arr.length;

for (int i=0;i<n ;i++ )

System.out.print(arr[i]+" ");

System.out.println();

}

public static void main (String[] args) {

/* code */

Scanner sc=new Scanner(System.in);

System.out.print("Enter the size of an array:");

int n=sc.nextInt();

if(n>0)

{

int arr[]=new int[n];

System.out.print("Enter the elements:");

for (int i=0;i<n ;i++ )

arr[i]=sc.nextInt();

System.out.println("Given array is");

printArray(arr);

MergeSort(arr,0,arr.length-1);

System.out.println("\nSorted array is");

printArray(arr);

}

else

{

System.out.println("Invalid array size");

}

}

}

6. Occurrences

Path: Algorithms Analysis and Design Concepts/Occurrences/DeleteMain.java

import java.util.*;

class Node

{

int data;

Node next;

public Node(int data)

{

this.data=data;

this.next=null;

}

}

public class DeleteMain

public static void main (String[] args) {

Scanner sc = new Scanner(System.in);

DeleteMain obj = new DeleteMain();

int n = sc.nextInt();

if(n>0)

{

sc.nextLine();

String[] in = (sc.nextLine().split(" "));

for(int i=0; i<n; i++)

{

}

System.out.println("Enter the element to be deleted: ");

int key=sc.nextInt();

obj.delete(key);

System.out.print("The list after deletion: ");

obj.display();

}

}

{

Node newNode = new Node(data);

{

return;

}

else

{

while(current.next != null)

{

current = current.next;

}

current.next = newNode;

return;

}

}

public void delete(int key)

{

Node temp = head, prev = null;

while(temp != null && temp.data == key)

{

}

while(temp != null)

{

while(temp != null && temp.data != key)

{

prev = temp;

temp = temp.next;

}

if(temp == null)

{

return;

}

prev.next = temp.next;

temp = prev.next;

}

}

public void display()

{

while(temp != null)

{

System.out.print(temp.data+" ");

temp = temp.next;

}

}

}

7. Quick Sort Algorithm

Path: Algorithms Analysis and Design Concepts/Quick Sort Algorithm/QuickSort.java

import java.util.Scanner;

public class QuickSort

{ public static void main(String[] args)

{ int i,n;

Scanner q= new Scanner(System.in);

int []arr= new int[100];

System.out.print("How many elements?");

n=q.nextInt();

if(n==0||n<0)

{ System.out.println("Invalid Input");}

else

{System.out.print("Enter array elements:");

for(i=1;i<=n;i++)

{ arr[i]=q.nextInt();

}

quickSort(arr,1,n);

System.out.print("Array after sorting:");

for(i=1;i<=n;i++)

System.out.print(arr[i]+" ");

}}

public static int partition(int a[],int beg,int end)

{ int left, right,temp,loc,flag;

loc=left=beg;

right=end;

flag=0;

while(flag!=1)

{ while((a[loc]<=a[right])&&(loc!=right))

right--;

if(loc==right)

flag=1;

else if(a[loc]>a[right])

{ temp=a[loc];

a[loc]=a[right];

a[right]=temp;

loc=right;

}

if(flag!=1)

{ while((a[loc]>=a[left])&&(loc!=left))

left++;

if(loc==left)

flag=1;

else if(a[loc]<a[left])

{ temp=a[loc];

a[loc]=a[left];

a[left]=temp;

loc=left;

}

}

}

return loc;

}

static void quickSort(int a[], int beg, int end)

{ int loc;

if(beg<end)

{ loc=partition(a,beg,end);

quickSort(a,beg,loc-1);

quickSort(a,loc+1,end);

}

}

}

8. Replace Character

Path: Algorithms Analysis and Design Concepts/Replace Character/ReplaceDriver.java

import java.util.Scanner;

public class ReplaceDriver{

public static String replace(String str, char c1, char c2){

if(str.length()<1){

return str;

}

else{

char first=c1==str.charAt(0)? c2 :str.charAt(0);

return first+ replace(str.substring(1),c1,c2);

}

}

public static void main(String[] args)

{ Scanner r= new Scanner(System.in);

String str= new String();

System.out.println("Enter the string");

str=r.nextLine();

System.out.println("Enter the character to be replaced");

char c1= r.next().charAt(0);

System.out.println("Enter the character to be replaced with");

char c2=r.next().charAt(0);

System.out.print("The modified string is "+ replace(str,c1,c2));

}

}

9. Reversing a List

Path: Algorithms Analysis and Design Concepts/Reversing a List/List.java

import java.util.*;

class Node{

int data;

Node next;

Node(int data)

{

this.data=data;

this.next=null;

}

}

public class List

public static void main (String[] args) {

Scanner sc=new Scanner (System.in);

List obj = new List();

do{

System.out.println("Enter the value:");

int val=sc.nextInt();

sc.nextLine();

obj.append(val);

System.out.println("Do you want to add another node? Type Yes/No");

}while(sc.nextLine().equalsIgnoreCase("yes"));

System.out.print("The elements in the linked list are: ");

obj.display();

obj.Reverse();

System.out.println();

System.out.print("The elements in the reversed linked list are : ");

obj.display();

}

public void append(int data)

{

Node newNode= new Node(data);

{

return;

}

else

{

while(current.next!=null)

{

current = current.next;

}

current.next=newNode;

return;

}

}

public void display()

{

while(temp!=null)

{

System.out.print(temp.data+" ");

temp=temp.next;

}

}

public Node Reverse()

{

Node prev=null;

Node next=null;

while(current!=null)

{

next=current.next;

current.next=prev;

prev=current;

current=next;

}

}

}

10. Scorecard - Queue

Path: Algorithms Analysis and Design Concepts/Scorecard - Queue/ScoreCardDriver.java

import java.util.*;

class ScoreCardDriver

{

final static int MaxQ=100;

int front = 0, rear = 0;

int[] QA = new int[MaxQ];

public boolean empty()

{

return front == rear;

}

public static void main (String[] args)

{

Scanner sc = new Scanner(System.in);

ScoreCardDriver obj = new ScoreCardDriver();

System.out.print("Enter the size of the score card:");

int n=sc.nextInt();

if(n>0 && n<=100)

{

int[] in = new int[n];

for(int i=0; i<n; i++)

{

System.out.print("Enter the hurdle race score "+(i+1)+":");

obj.enQueue(sc.nextInt());

System.out.println();

}

System.out.print("Latest hurdle race scores are: ");

obj.display();

}

else

{

System.out.println("Invalid score card size");

}

}

public void enQueue(int n)

{

/*if(rear != front)

{

return;

}*/

if((rear-front) == 5)

{

deQueue();

}

QA[rear] = n;

rear++;

return;

}

public void deQueue()

{

if(this.empty())

{

return;

}

front++;

}

public void display()

{

for(int i=front; i<rear ;i++)

{

System.out.print(QA[i]+" ");

}

}

}

Path: Algorithms Analysis and Design Concepts/Singly Linked List/ListDriver.java

import java.util.Scanner;

public class ListDriver

{ class Node { int data;

Node next;

public Node(int data)

{ this.data=data;

this.next=null;

}

}

public int size;

public Node tail=null;

{ Node newNode=new Node(data);

tail=newNode;

}

else{tail.next=newNode;

tail =newNode;

}

size++;

}

public Node reverseList(Node temp)

{ Node current=temp;

Node prevNode=null, nextNode=null;

while(current!=null)

{nextNode=current.next;

current.next=prevNode;

prevNode=current;

current=nextNode;

}

return prevNode;

}

public void isPalindrome()

boolean flag=true;

int mid=(size%2==0)?(size/2):((size+1)/2);

for(int i=1;i<mid;i++)

{current=current.next;

}

{ flag=false;

break;

}

}

if(flag)

System.out.println("1");

else

System.out.println("0");

}

public void display()

{ return;

}

while(current!=null)

current=current.next;

}

System.out.println();

}

public static void main(String[] args)

{ ListDriver sList=new ListDriver();

Scanner s= new Scanner(System.in);

int n;

n=s.nextInt();

n--;

} while(n>=1);

sList.display();

sList.isPalindrome();

}

}

12. Stack Operation

Path: Algorithms Analysis and Design Concepts/Stack Operation/StackDriver.java

import java.util.*;

class StackDriver

{   int top=-1;

int[] stk=new int[100];

public static void main (String[] args)

{

Scanner sc=new Scanner(System.in);

StackDriver obj=new StackDriver();

System.out.println("Enter the number of elements to be pushed in the stack:");

int n=sc.nextInt();

if(n>0)

{

for(int i=0;i<n;i++)

{

System.out.println("Enter the element "+(i+1)+":");

obj.push(sc.nextInt());

}

System.out.println("The middle element is: "+obj.findMiddle());

System.out.println("The popped element is: "+obj.pop());

}

else

{

System.out.println("Invalid Input");

}

}

public void push(int data)

{

stk[++top]=data;

}

public int pop()

{

return stk[top--];

}

public int findMiddle()

{

if((top+1)%2==0)

{

return stk[(int)top/2];

}

else

{

return stk[(int)(top+1)/2];

}

}

}

13. Stack Reverse - Recursion

Path: Algorithms Analysis and Design Concepts/Stack Reverse - Recursion/StackDriver.java

import java.util.Stack;

import java.util.Scanner;

class StackDriver

{ static Stack<Integer>st=new Stack<>();

static void insert_at_bottom(int x)

{ if(st.isEmpty())

st.push(x);

else

{  int a= st.peek();

st.pop();

insert_at_bottom(x);

st.push(a);

}

}

static void reverse()

{ if(st.size()>0)

{ int x= st.peek();

st.pop();

reverse();

insert_at_bottom(x);

}

}

public static void main(String[] args)

{ Scanner s=new Scanner(System.in);

System.out.println("Enter length of List:");

int n=s.nextInt();

if(n==0||n<0)

{ System.out.println("Invalid Length");}

else

{for(int i=1;i<=n;i++)

{ st.push(i);}

System.out.println("Elements in Stack ");

System.out.println(st);

reverse();

System.out.println("Elements in the stack after reversal");

System.out.println(st);}

}

}

14. String Reverse - Recursion

Path: Algorithms Analysis and Design Concepts/String Reverse - Recursion/ReverseDriver.java

import java.util.Scanner;

public class ReverseDriver{

public static void main(String[] args)

{ String str;

System.out.print("Enter the string: ");

Scanner scanner=new Scanner(System.in);

str=scanner.nextLine();

scanner.close();

String reversed =reverseString(str);

System.out.println("Reversed string is: "+ reversed);

}

public static String reverseString(String str)

{ if(str.isEmpty())

return str;

return reverseString(str.substring(1))+str.charAt(0);

}

}

15. String Sorting

Path: Algorithms Analysis and Design Concepts/String Sorting/SortDriver.java

import java.util.Scanner;

import java.lang.*;

class SortDriver{

public final static int MAX =100;

public static String alternateSort(String s1)

{

int n= s1.length();

char [] s = s1.toCharArray();

int[] lCount = new int [MAX];

int[] uCount = new int [MAX];

for (int i=0;i<n;i++)

{

if(Character.isUpperCase(s[i]))

uCount[s[i] - 'A']++;

else

lCount[s[i] - 'a']++;

}

int i=0,j=0,k=0;

while(k<n)

{

while(i<MAX && uCount[i] ==0)

i++;

if(i<MAX)

{

s[k++]= (char)('A'+i);

uCount[i]--;

}

while(j<MAX && lCount[j]==0)

j++;

if(j<MAX)

{

s[k++]= (char)('a'+j);

lCount[j]--;

}

}

return(new String(s));

}

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

System.out.println("Enter the String:");

String str;

str =input.nextLine();

System.out.println("the Sorted String is:");

System.out.println(alternateSort(str));

}

}

16. Tower-of-Hanoi

Path: Algorithms Analysis and Design Concepts/Tower-of-Hanoi/TowerTest.java

import java.util.*;

public class TowerTest

{

public static void main (String[] args) {

Scanner sc=new Scanner(System.in);

System.out.println("Enter the number of disks :");

int n=sc.nextInt();

if(n>0 && n<=6)

{  System.out.println("The sequence of moves involved in the Tower of Hanoi are:");

towerOfHanoi(n, 'A', 'C', 'B');

}

else

{

System.out.println("Invalid input");

}

}

static void towerOfHanoi(int n, char from_rod, char to_rod, char aux_rod)

{

if(n==1)

{

System.out.println("Move disk 1 from peg "+ from_rod + " to peg " + to_rod);

return;

}

towerOfHanoi(n-1, from_rod, aux_rod, to_rod);

System.out.println("Move disk "+n+" from peg "+ from_rod + " to peg "+to_rod);

towerOfHanoi(n-1, aux_rod, to_rod, from_rod);

}

}

17. World Cup -Binary Search

Path: Algorithms Analysis and Design Concepts/World Cup -Binary Search/BinarySearch.java

import java.util.Scanner;

class BinarySearch

{ public static int binarySearch(int arr[],int l,int r ,int x)

{ if(r>=l)

{ int mid=l+(r-1)/2;

if(arr[mid]==x)

return mid;

if(arr[mid]>x)

return binarySearch(arr,l,mid-1,x);

return binarySearch(arr,mid+1,r,x);

}

return -1;

}

public static void main(String args[])

{ BinarySearch ob=new BinarySearch();

Scanner b =new Scanner(System.in);

System.out.println("Enter the number of Teams:");

int n =b.nextInt();

if(n==0||n<0)

{ System.out.println("Invalid Input");}

else

{int a[]=new int[100];

System.out.println("Enter the score:");

for(int i=0;i<n;i++)

{ a[i]=b.nextInt();}

System.out.println("Enter the score to be searched:");

int x=b.nextInt();

if(x==0||x<0)

{ System.out.println("Invalid Input");}

else

{int result=ob.binarySearch(a,0,n-1,x);

int r= result+1;

if(result==-1)

else

System.out.println(x+" is the score of Team "+r);}}

}

}

If you have any queries, please feel free to ask on the comment section.

If you want MCQs and Hands-On solutions for any courses, Please feel free to ask on the comment section too.

Please share and support our page!