백준 16968번 차량번호판 1(Python3)

김성준·2021년 4월 29일
0

알고리즘

목록 보기
3/6
fmt = list(input())
ret = 1
for i in range(len(fmt)):
    if fmt[i] == 'd':
        fmt[i] = 10
    else:
        fmt[i] = 26

for i in range(1, len(fmt)):
    if fmt[i] == fmt[i - 1]:
        fmt[i - 1] -= 1
for i in fmt:
    ret *= i
print(ret)

문제 :

해결방법: 처음엔 백트래킹으로 모든 경우의 수를 구해보려 했으나, 굳이 백트래킹을 사용하지 않고 단순하게 풀 수 있을것 같았다.

1)리스트에서 'D'인 경우 10으로 바꾸고 'C'인 경우 26으로 바꾼다.(숫자는 0~9까지 10의 자리이고, 문자는 'a'~'z'까지 26개이기 때문)
2)연속하여 똑같은 문자가 나왔을 경우만 -1을 해준 다.(연속하여 똑같은 수가 올 수 없기 때문)
3)리스트의 값을 다 더해서 정답을 구한다.

profile
수신제가치국평천하

0개의 댓글