일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 프로그래머스
- 백트랙킹
- 다익스트라
- java #자바 #생활코딩
- dp
- DFS
- 프로그래머스 #파이썬 #코딩테스트 #알고리즘
- 백준 #알고리즘 #파이썬 #코딩테스트
- 자바 #java
- react #리액트 #동빈나
- 파이썬
- react #리액트 #동빈나 #나동빈 #유튜브강의
- 파이썬 #알고리즘 #코딩테스트 #프로그래머스
- 백준 #파이썬 #알고리즘 #코딩테스트
- BFS
- 알고리즘
- Dijkstra
- PYTHON
- java #자바 #나동빈
- 투포인터
- java #자바 #동빈나
- 재귀
- 코딩테스트
- css #생활코딩 #웹
- java #자바
- 백준
- 파이썬 #백준 #알고리즘 #코딩테스트
- css #웹 #생활코딩
- 다이나믹프로그래밍
- 프로그래머스 #파이썬 #알고리즘 #코딩테스트
Archives
- Today
- Total
커리까지
1342번 행운의 문자열 파이썬 본문
728x90
SMALL
문제
민식이와 준영이는 자기 방에서 문자열을 공부하고 있다. 민식이가 말하길 인접해 있는 모든 문자가 같지 않은 문자열을 행운의 문자열이라고 한다고 한다. 준영이는 문자열 S를 분석하기 시작했다. 준영이는 문자열 S에 나오는 문자를 재배치하면 서로 다른 행운의 문자열이 몇 개 나오는지 궁금해졌다. 만약 원래 문자열 S도 행운의 문자열이라면 그것도 개수에 포함한다.
입력
첫째 줄에 문자열 S가 주어진다. S의 길이는 최대 10이고, 알파벳 소문자로만 이루어져 있다.
출력
첫째 줄에 위치를 재배치해서 얻은 서로 다른 행운의 문자열의 개수를 출력한다.
예제 입력 1
aabbbaa
예제 출력 1
1
예제 입력 2
ab
예제 출력 2
2
참고 답안
from collections import Counter
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10**5)
def back_tracking(pre, i):
answer = 0
if i == len(s):
return 1
for k in cnt.keys():
if k == pre or cnt[k] == 0:
continue
cnt[k] -= 1
answer += back_tracking(k, i + 1)
cnt[k] += 1
return answer
s = list(map(str, input().strip()))
cnt = Counter(s)
print(back_tracking("", 0))
728x90
LIST
'알고리즘 > 풀이' 카테고리의 다른 글
[백준] 18290번 NM과 K (1) 파이썬 (0) | 2023.08.20 |
---|---|
[백준] 12101번 1,2,3 더하기 2 파이썬 (0) | 2023.08.19 |
[백준] 17391번 무한부스터 파이썬 (0) | 2023.08.11 |
[백준] 15723번 n단 논법 파이썬 (0) | 2023.08.11 |
[백준] 15900번 나무 탈출 파이썬 (0) | 2023.08.05 |
Comments