반응형
https://www.acmicpc.net/problem/1759
처음 일단 입력받은 array는 정렬이 안되어있기 때문에 정렬 시켜준 뒤
브루트 포스 방식으로 하기 위해서 일단 준비해야하는건
문자가 사용된 문자인지 알기 위해서 temp라는 리스트를 만들어서 문자의 개수만큼 0으로 만들어준다
그 다음 처음부터 끝까지 계속돌면서 문자가 사용되지 않았고 그 이전에 넣었던 값보다 큰지 확인하고 일치하다면 모음인 경우엔 a라는 카운트를 하나 추가하고 자음인 경우 b라는 카운트를 추가한다.
그 후 재귀 방식으로 계속해서 이어나가고 재귀가 끝난 다음에는 이 문자가 다른 경우에도 사용될 수 있게 다시 temp[i]를 0으로 초기화해준다
그러다가 cnt가 문제에서 요구되는 문자열의 개수와 일치할때 a값과 b값이 기준에 만족하는 확인하고 만족하면 출력한다.
import sys
input= sys.stdin.readline
l,c=map(int,input().split())
ary = list(input().split())
ary.sort()
temp = [0]*c
def recur(temp,a,b,cnt,res,item):
for i in range(c):
if cnt >= l:
if a >= 1 and b >= 2:
print(res)
return
if not temp[i] and item < ary[i]:
if ary[i] in ['a','e','i','o','u']:
temp[i]=1
recur(temp,a+1,b,cnt+1,res+ary[i],ary[i])
temp[i]=0
else:
temp[i]=1
recur(temp,a,b+1,cnt+1,res+ary[i],ary[i])
temp[i]=0
recur(temp,0,0,0,"",".")
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
Python 1182번 부분수열의 합 (0) | 2022.07.31 |
---|---|
Python 6603번 로또 (0) | 2022.07.29 |
2096번 파이썬 (0) | 2022.05.04 |
1309번 파이썬 (0) | 2022.04.13 |
1965번 파이썬 (0) | 2022.04.13 |