DSA Learning Series : Complexity Analysis + Basics Warm Up

 DSA Learning Series : Basics


CodeChef DSA learning Series





This post contains 9 simple problems which can be found here at Codechef.



Python :

while(True):
    n=int(input())
    if(n!=42):
        print(n)
    else:
        break


C++ :

#include <bits/stdc++.h>
#define ll long long int
#define endl "\n"
using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    while(true)
    {
        ll num;
        cin >> num;
        if(num == 42)
        break;
        cout << num << endl;
    }
    return 0;
}


OR

#include <iostream>
using namespace std;

int main() {
// your code goes here
int input;
while(cin>>input)
{
    if(input==42)
    break;
    else
    cout<<input<<'\n';
}
return 0;
}




Python :

try:
    k=int(input())
    for i in range(k):
        l=input()
        print(int(l[::-1]))
except EOFError:
    pass

OR

t=int(input())
while t>0:
    l=input()
    print(int(l[::-1]))
    t-=1

C++:

#include <bits/stdc++.h>

using namespace std;

int main() {
int t,a,sum=0,r;
cin>>t;
for(int i=0;i<t;i++)
{
    sum=0;
    cin>>a;
    while(a!=0)
    {
        r=a%10;
        sum=sum*10+r;
        a=a/10;
    }
    cout<<sum<<endl;
}
return 0;
}


OR

#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i = a; i < b; i++)
#define per(i,a,b) for (int i=b-1;i>=a;i--)
#define pb push_back
#define endl '\n'
#define all(x) x.begin(), x.end()
#define pf push_font
typedef long long ll;
typedef vector<int> vi;
const ll mod=1000000007;
int _;
int main()
{
ios_base::sync_with_stdio(false);cin.tie(NULL);
cin >> _;
while(_--){
string x;
    cin >> x;
    reverse(all(x));
    //cout << x << endl;
    int a;
    rep(i,0,x.size()){
    if(x[i] != '0'){
    a = i;break;
}
}
rep(i,a,x.size()){
cout <<x[i];
}
cout << endl;
}
return 0;
}



Python :

t = int(input())
while t>0:
    l=input()
    lis=[]
    for j in l:
        lis.append(j)
    n=len(lis)
    y=n//2
    lis1=[]
    lis2=[]
    for i in range(y):
        k=i
        lis1.append(lis[k])
        lis2.append(lis[n-k-1])
    lis1.sort()
    lis2.sort()
    if lis1==lis2:
        print("YES")
    else:
        print("NO")
    t-=1

OR

t=int(input())
for i in range(t):
    a=input()
    if (len(a)%2==0):
        x=a[:len(a)//2]
        y=a[len(a)//2:]
    else:
        x=a[:len(a)//2]
        y=a[len(a)//2+1:]
    for i in x:
        if x.count(i)==y.count(i):
            ans=("YES")
        else:
            ans=("NO")
            break
    print(ans)

OR

from collections import Counter

def checkTwoHalves(input):
length = len(input)

if (length % 2 != 0):
first = input[0:length // 2]
second = input[(length // 2) + 1:]
else:
first = input[0:length // 2]
second = input[length // 2:]

if Counter(first) == Counter(second):
print ('YES')
else:
print ('NO')

t = int(input())
for i in range(t):
s = input()
checkTwoHalves(s)

OR

for i in range(int(input())):
    s = input()
    l = len(s) # len(s) odd aabaa l = 5 // 2 + 1, s[:2] s[3:]

    f = s[:l//2]
    l = s[l//2:] if l%2 == 0 else s[(l//2)+1:]

    fCount = dict()
    lCount = dict()

    for i in f:
        fCount[i] = fCount.get(i, 0) + 1

    for i in l:
        lCount[i] = lCount.get(i, 0) + 1

    if set(l) == set(f):
        for i in fCount.keys():
            if fCount[i] != lCount[i]:
                print('NO')
                break
        else:
            print('YES')
    else:
        print('NO')


C++ :

#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i = a; i < b; i++)
#define per(i,a,b) for (int i=b-1;i>=a;i--)
#define pb push_back
#define endl '\n'
#define all(x) x.begin(), x.end()
#define pf push_font
typedef long long ll;
typedef vector<int> vi;
const ll mod=1000000007;
int _;
int main()
{
ios_base::sync_with_stdio(false);cin.tie(NULL);
cin >> _;
while(_--){
string x;
cin >> x;
int n = x.size();
if(n%2==0){
string n1,n2;
n1 = x.substr(0,n/2);
n2 = x.substr(n/2,n/2);
sort(all(n1));
sort(all(n2));
//cout << n1 << ' ' << n2 << endl;
if(n1 == n2) cout << "YES" << endl;
else cout << "NO" << endl;
}
else{
string n1,n2;
n1=x.substr(0,n/2);
n2 = x.substr(n/2+1,n/2);
sort(all(n1));
sort(all(n2));
//cout << n1 << ' ' << n2 << endl;
if(n1 == n2) cout << "YES" << endl;
else cout << "NO" << endl;
}
}
return 0;
}


OR


#include <bits/stdc++.h>
using namespace std;

int main() {
	// your code goes here
	int t;
	cin>>t;
	while(t--)
	{
	    string s;
	    cin>>s;
	    vector<char> arr;
	    vector<char> arr1;
	    int flag=0;
	    int index;
	    if(s.size()%2)
	    {
	        index=(s.size()/2)+1;
	    }
	    else
	    {
	        index=s.size()/2;
	    }
	    for(int i=0;i<s.size()/2;i++)
	    {
	        arr.push_back(s[i]);
	    }
	    sort(arr.begin(),arr.end());
	    for(int i=index;i<s.size();i++)
	    {
	        arr1.push_back(s[i]);
	    }
	    sort(arr1.begin(),arr1.end());
	    for(int i=0;i<s.size()/2;i++)
	    {
	        if(arr[i]==arr1[i])
	        {
	            continue;
	        }
	        else
	        {
	            cout<<"NO"<<endl;
	            flag=1;
	            break;
	        }
	    }
	    if(flag==0)
	        cout<<"YES"<<endl;
	}
	return 0;
}

OR 

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <climits>
#include <math.h>
using namespace std;
int main()
{
    int t;
    cin >> t;
    while (t > 0)
    {
        string s;
        cin >> s;
        int n = s.length();
        string p;
        if (n % 2 == 0)
        {
            p = s.substr(n / 2, n / 2);
            s.erase(n / 2, n / 2);
        }
        else
        {
            p = s.substr((n / 2) + 1, n / 2);
            s.erase(n / 2, (n / 2) + 1);
        }
        sort(s.begin(), s.end());
        sort(p.begin(), p.end());
        int count = 0;
        
            if (s== p)
            {
                cout << "YES" << endl;
                
            }
            else
            {
                cout<<"NO"<<endl;
            }
        
        
        t--;
    }

    return 0;
}

Smart Phone

Python :
arr=[]
n=int(input())
for i in range(n):
    arr.append(int(input()))
arr.sort() 
max1=0 
for i in range(n):
    rev=arr[i]*(n-i) 
    if(rev>max1):
        max1=rev
print(max1)

OR
n = int(input())
budget = []
for i in range(0,n):
    x = int(input())
    budget.append(x)
budget.sort()
bud = tuple(budget)
max_budget = []
for j in range(0,len(bud)):
    max_budget.append((len(budget))*bud[j])
    budget.remove(bud[j])
max_budget.sort()
print(max_budget[len(max_budget)-1])

C++ :
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl "\n"
#define round(n) fixed << setprecision(n)
#define pb push_back


int32_t main() {
	ios::sync_with_stdio(0); 
	cin.tie(0); 
	#ifndef ONLINE_JUDGE 
		freopen("input.txt", "r", stdin); 
		freopen("output.txt", "w", stdout); 
	#endif

	int n;
	cin >> n;
	vector<int> p(n);
	for (int i = 0; i < n; i++) {
		cin >> p[i];
	}

	sort(p.begin(), p.end());
	int maxP = 0;
	for (int i = 0; i < n; i++) {
		maxP = max(maxP, p[i] * (n - i));
	}
	cout << maxP;

	return 0;
}
OR

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

typedef long long ll;

int main()
{
    int n;
    cin >> n;
    vector<int> A(n);
    for (int i = 0; i < n; i++)
        cin >> A[i];
    sort(A.begin(), A.end());

    ll result = 0;
    for (int i = 0; i < n; i++)
        result = max(result, (n - i) * 1ll * A[i]);
    cout << result << endl;
}





Python:
for _ in range(int(input())):
    n=int(input())
    arr=[int(x) for x in input().split()]
    count=0
    max_speed=10**18
    for i in arr:
        if(i<=max_speed):
            count+=1 
            max_speed=i 
    print(count)

OR
t=int(input())
for i in range(t):
    c=1
    n=int(input())
    l=[int(i) for i in input().split()]
    l1=l[0]
    if n==1:
            print("1")
    elif n>1:
        for i in range(1,len(l)):
            if l[i]<=l1:
                l1=l[i]
                
                c=c+1
        print(c)   

C++:
#include <iostream>
using namespace std;

int main(void) {
	// your code goes here
	int t;
	cin>>t;
	while(t--)
	{
	    int n,c=1;
	    cin>>n;
	    int a[n];
	    for(int i=0;i<n;i++)
	    cin>>a[i];
	    int max=a[0];
	    for(int i=1;i<n;i++)
	    {
	        if(max>a[i])
	        {
	            max=a[i];
	            c++;
	        }
	    }
	    cout<<c<<endl;
	}
	return 0;
}