최대 1 분 소요

사용 언어: Python3

문제

스크린샷 2023-05-18 오후 8 28 48

풀이

def DFS(L, pos):
    global cnt
    if L == N:
        cnt += 1
        print(''.join(chr(res[i] + 64) for i in range(pos)))
        # for i in range(pos):
        #     print(chr(res[i]+64), end ='')
        # print()
    else:
        for i in range(1, 27):
            if letters[L] == i: # ✅ 한자리 확인
                res[pos] = i
                DFS(L+1, pos+1) # ✅ 한 칸 건너뛰기
            elif i >= 10 and letters[L] == i//10 and letters[L+1] == i%10: # ✅ 두자리 확인
                res[pos] = i
                DFS(L+2, pos+1) # ✅ 두 칸 건너뛰기

letters = list(map(int, input()))
N = len(letters)
letters.insert(N, -1) # ✅ 두 자리 수 비교할 때 맨 마지막 out of index 방지

cnt = 0
res = [0] * (N+3) # 결과 (ex. [25, 11, 4])
DFS(0, 0)
print(cnt)

IMG_4381



💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기