➤ Problem Link : 1102D. Balanced Ternary String
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; #define ll long long int int main() { int n; cin>>n; char arr[n]; int zc=0,oc=0,tc=0; for(int i=0;i<n;i++) { cin>>arr[i]; if(arr[i]=='0') zc++; else if(arr[i]=='1') oc++; else tc++; } int zreq=n/3 - zc; int oreq=n/3 - oc; int treq=n/3 - tc; zc=0,oc=0,tc=0; for(int i=0;i<n;i++) { if(arr[i]=='0') { if(zc < n/3) zc++; else { if(oreq > 0) { oreq--; arr[i]='1'; } else { treq--; arr[i]='2'; } } } else if(arr[i]=='2') { if(treq >= 0) continue; if(zreq>0) { zreq--; treq++; arr[i]='0'; } else if(oreq > 0) { oreq--; treq++; arr[i]='1'; } } else { if(oreq>=0) continue; if(zreq > 0) { zreq--; oreq++; arr[i]='0'; } else if(oc < n/3) oc++; else if(treq > 0) { treq--; oreq++; arr[i]='2'; } } } for( char c : arr) cout<<c; }
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!