황소개발자

백준 14238 파이썬 python : 출근 기록 @@황소처럼 우직하게@@ ㅋㅋ재밋네 본문

백준 문제 풀이

백준 14238 파이썬 python : 출근 기록 @@황소처럼 우직하게@@ ㅋㅋ재밋네

hjp845 2020. 4. 24. 02:25
반응형

재밌어..ㅋㅋ

S = input().strip()
n = len(S)

dp = [[[[[0 for _ in range(3)] for _ in range(3)] for _ in range(51)] for _ in range(51)] for _ in range(51)]

ans = [0] * 50
def go(a, b, c, p1, p2):
    if a < 0 or b < 0 or c < 0:
        return False
    if a == 0 and b == 0 and c == 0:
        return True
    if dp[a][b][c][p1][p2]:
        return False
    dp[a][b][c][p1][p2] = True
    ans[n-a-b-c] = 'A'
    if go(a - 1, b, c, 0, p1):
        return True
    if p1 != 1:
        ans[n-a-b-c] = 'B'
        if go(a, b - 1, c, 1, p1):
            return True
    if p1 != 2 and p2 != 2:
        ans[n-a-b-c] = 'C'
        if go(a, b, c - 1, 2, p1):
            return True
    return False



an = 0
bn = 0
cn = 0
for s in S:
    if s == 'A':
        an += 1
    elif s == 'B':
        bn += 1
    elif s == 'C':
        cn += 1
if go(an, bn, cn, 0, 0):
    print(''.join(ans[:n]))
else:
    print(-1)

 

반응형
Comments