Problem:
	
B: Shortest Crypt

	
問題

	

		xryuseixくんの学校では暗号が流行している. 格子状の街に住んでいるxryuseixくんは集合場所を決める新しい暗号を考えた.
	

	

		暗号文は $N$ 文字の文字列 $S$ からなり, $S_i$ の文字によって現在地からの移動方向を決める. 移動方向に関しては以下の通りである.

		

			
A ~ M : 北に１マス進む.

			
N ~ Z : 南に１マス進む.

			
a ~ m : 東に１マス進む.

			
n ~ z : 西に１マス進む.

		

	

	

		さて,ここでxryuseixくんは, yryuseiyちゃんにデートの集合場所を暗号文で教えようと思ったのだが, 暗号文が冗長なことに気づいた.
	

	

		例えば,「ANA」という暗号文があったとしよう. これは北に $1$ マス進み, 南へ $1$ マス進んだのち北へ $1$ マス進む.
		これは北に $1$ マス進む暗号文と等価なので,「ANA」＝「A」と, 簡潔にできる. xryuseixくんはyryuseiyちゃんに遠回りをさせないよう,暗号文を簡潔にしようと思った.
	

	

		そこであなたはxryuseixくんに変わって, 暗号文を簡潔にするプログラムを書くことになった.
		なお, 「暗号文を簡潔にする」とは,「元の暗号文と同じ目的地へ行く最も短い暗号文を作る」ということである.

	

	
制約

	

		
 $N$ は整数であり, $S_i$ は大文字または小文字のアルファベットである.

		
$1 \leq N \leq 10^{5}$

	

	
入力形式

	
 入力は以下の形式で与えられる. 

	

		$N$

		$S$

	

	
出力

	

		$1$ 行目に簡潔にした後の暗号文の長さ, $2$ 行目にその暗号文を出力せよ.
		答えとしてありうる暗号文が複数存在する場合, どれを出力してもよい.
		また各行の末尾に改行を出力せよ.
	

	
サンプル

	
サンプル入力 1

	

5
ANazA

	
サンプル出力 1

	

1
A

	
サンプル入力 2

	

7
ACMICPC

	
サンプル出力 2

	

5
HIJKL

	
サンプル入力 3

	

4
AIZU

	
サンプル出力 3

	

0

	

		簡潔にした暗号文(空の文字列)のあとに改行が必要なことに注意.
	



Sample input:
5
ANazA


Sample output:
1
A

Submission status: Accepted

Solution code:
N = int(input())
word = list(input())
X1 = ['A','B','C','D','E','F','G','H','I','J','K','L','M']
X2 = ['N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
Y1 = ['a','b','c','d','e','f','g','h','i','j','k','l','m']
Y2 = ['n','o','p','q','r','s','t','u','v','w','x','y','z']
x = 0
y = 0
answer = ""
for i in word:
  if i in X1:
    x += 1
  elif i in X2:
    x -= 1
  elif i in Y1:
    y += 1
  elif i in Y2:
    y -= 1
print(abs(x)+abs(y))
if abs(x)+abs(y) > 0:
  if x > 0:
    answer += "A" * x
  elif x < 0:
    answer += "N" * abs(x)
  if y > 0:
    answer += "a" * y
  elif y < 0:
    answer += "n" * abs(y)
  print(answer)

Submission status: Accepted

Solution code:
n = int(input())
ns = 0
ew = 0
meirei = list(input())
for i in range(n) :
    if 65 <= ord(meirei[i]) <= 77 :
        ns += 1
    elif 78 <= ord(meirei[i]) <= 90 :
        ns -= 1
    elif 97 <= ord(meirei[i]) <= 109 :
        ew += 1
    else :
        ew -= 1
print(abs(ns) + abs(ew))
if ns > 0 :
    print('A' * ns, sep='', end='')
elif ns < 0 :
    print('Z' * (-ns), sep='', end='')
if ew > 0 :
    print('a' * ew, sep='', end='')
elif ew < 0 :
    print('z' * (-ew), sep='', end='')
print()

Submission status: Accepted

Solution code:
# -*- coding: utf-8 -*-
from string import ascii_letters
from collections import defaultdict
import sys
#input = sys.stdin.readline
def inpl(): return list(map(int, input().split()))

M = {s:i//13 for i, s in enumerate(ascii_letters)}
D = defaultdict(int)
ans = ""

input()
for s in input():
    D[M[s]] += 1

if D[0] > D[1]:
    ans = "a" * (D[0] - D[1])
else:
    ans = "z" * (D[1] - D[0])

if D[2] > D[3]:
    ans += "A" * (D[2] - D[3])
else:
    ans += "Z" * (D[3] - D[2])

print(len(ans))
print(ans)

Submission status: Accepted

Solution code:
n = int(input())
S = input()

C = [chr(i) for i in range(97, 97+13)]
D = [chr(i) for i in range(97+13, 97+26)]
A = [chr(i) for i in range(65, 65+13)]
B = [chr(i) for i in range(65+13, 65+26)]

X = [0] * 2
for s in S:
    if s in A:
        X[0] += 1
    elif s in B:
        X[0] -= 1
    elif s in C:
        X[1] += 1
    elif s in D:
        X[1] -= 1

ans = ""
if X[0] < 0:
    ans += 'N' * abs(X[0])
else:
    ans += 'A' * X[0]

if X[1] < 0:
    ans += 'n' * abs(X[1])
else:
    ans += 'a' * X[1]

print(len(ans))
print(ans)

Submission status: Accepted

Solution code:
N = int(input())
S = input()

n = s = e = w = 0
for c in S:
  if 'A' <= c <= 'M':
    n += 1
  elif 'N' <= c <= 'Z':
    s += 1
  elif 'a' <= c <= 'm':
    e += 1
  else:
    w += 1

my = min(n,s)
n -= my
s -= my
mx = min(e,w)
e -= mx
w -= mx

ans = 'A'*n + 'N'*s + 'a'*e + 'n'*w
print(len(ans))
print(ans)

Submission status: Accepted

Solution code:
N = int(input())
S = input()
A = Z = a = z = 0
for c in S:
    c = ord(c)
    if c <= 77:
        A += 1
    elif c <= 90:
        Z += 1
    elif c <= 109:
        a += 1
    else:
        z += 1
ans = "A"*(A-Z)+"Z"*(Z-A)+"a"*(a-z)+"z"*(z-a)
print(len(ans))
print(ans)

Submission status: Accepted

Solution code:
#!usr/bin/env python3
from collections import defaultdict,deque
from heapq import heappush, heappop
import sys
import math
import bisect
import random
def LI(): return [int(x) for x in sys.stdin.readline().split()]
def I(): return int(sys.stdin.readline())
def LS():return [list(x) for x in sys.stdin.readline().split()]
def S():
    res = list(sys.stdin.readline())
    if res[-1] == "\n":
        return res[:-1]
    return res
def IR(n):
    return [I() for i in range(n)]
def LIR(n):
    return [LI() for i in range(n)]
def SR(n):
    return [S() for i in range(n)]
def LSR(n):
    return [LS() for i in range(n)]

sys.setrecursionlimit(1000000)
mod = 1000000007


def solve():
    n = I()
    s = S()
    f = [0,0]
    for i in s:
        if "A" <= i <= "M":
            f[0] += 1
        elif "N" <= i <= "Z":
            f[0] -= 1
        elif "a" <= i <= "m":
            f[1] += 1
        else:
            f[1] -= 1
    ans = []
    for i in s:
        if "A" <= i <= "M" and f[0] > 0:
            f[0] -= 1
            ans.append(i)
        elif "N" <= i <= "Z" and f[0] < 0:
            f[0] += 1
            ans.append(i)
        elif "a" <= i <= "m" and f[1] > 0:
            f[1] -= 1
            ans.append(i)
        elif "n" <= i <= "z" and f[1] < 0:
            f[1] += 1
            ans.append(i)
    print(len(ans))
    print(*ans,sep = "")
    return

if __name__ == "__main__":
    solve()