Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 프로래머스
- 백준 파이썬
- spring cloud
- re.split
- JVM
- 백준
- springboot
- 백준 17779
- java
- 백준 15685
- 웹어플리케이션 서버
- Spring Boot
- Coroutine
- Kotlin
- 프로그래머스
- 백준 19238
- 백준 17626
- 파이썬
- 백준 16719
- Spring
- MySQL
- sql 기술면접
- java 기술면접
- JPA
- spring security
- spring oauth
- MSA
- 백준 16236
- with recursive
- 백준 16235
Archives
- Today
- Total
시작이 반
[백준] 16968번(python 파이썬) 본문
SMALL
백트래킹 관련 문제여서 백트래킹으로 풀었는데 생각해보면 경우의 수를 구하는 문제라 백트래킹으로 풀지 않아도 된다
중복 형식일경우 경우의 수를 체크해주면된다..
ex) dd : 10*9 ddd: 10 * 9 * 10
cc : 26 * 25 ccc: 26 * 25 * 26
cdc : 26 * 10 * 26
이런식....
car_number = list(input())
result = 0
def BackTrack(depth, dup):
global result
if depth == len(car_number):
result += 1
return
if car_number[depth-1] != car_number[depth]:
dup = -1
if car_number[depth] == 'c':
temp = [False] * 26
for i in range(26):
if dup != -1:
temp[dup] = True
if temp[i]:
continue
BackTrack(depth + 1, i)
else:
temp = [False] * 10
for i in range(10):
if dup != -1:
temp[dup] = True
if temp[i]:
continue
BackTrack(depth+1, i)
def solve():
global result
for i in range(len(car_number)):
if car_number[i] == 'c':
if i == 0:
result *= 26
continue
if car_number[i - 1] != car_number[i]:
result *= 26
else:
result *= 25
else:
if i == 0:
result *= 10
continue
if car_number[i - 1] != car_number[i]:
result *= 10
else:
result *= 9
#BackTrack(0, -1)
result = 1
solve()
print(result)
LIST
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 20208번(python 파이썬) (0) | 2021.02.04 |
---|---|
[백준] 1759번(python 파이썬) (0) | 2021.02.04 |
[백준] 6603번(python 파이썬) (0) | 2021.02.03 |
[백준] 14889번(python 파이썬) (1) | 2021.02.03 |
[백준] 14888번(python 파이썬) (0) | 2021.02.02 |