티스토리 뷰
https://www.acmicpc.net/problem/1062
import sys
n, k = map(int, input().split())
arr = []
# anta tica에 들어가는 알파벳
cur = ['a', 'n', 't', 'i', 'c']
#cur을 제외한 알파벳
alphabet = [
'b', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'o', 'p', 'q', 'r', 's',
'u', 'v', 'w', 'x', 'y', 'z'
]
result = 0
# 입력 받기
for i in range(n):
s = str(input().strip())
arr.append(s)
if k < 5:
print(0)
sys.exit()
#cur에 있는 알파벳만 사용하는 단어 찾기
def check():
result = 0
for i in range(len(arr)):
visited = True
#anta ? tica이므로 인덱스범위 4 ~ len(arr[i])-4
for j in range(4, len(arr[i]) - 4):
if arr[i][j] not in cur:
visited = False
break
# 해당 배열로 조합가능하다면
if visited == True:
result += 1
return result
#dfs 탐색을 통해 가르칠 수 있는 최대 단어수 찾기
def dfs(cnt, start):
global result
#k와 cnt가 같을 경우
if cnt == k:
#최대값을 reuslt로 갱신
result = max(result, check())
return
for i in range(start, len(alphabet)):
cur.append(alphabet[i])
dfs(cnt+1, i+1)
cur.pop()
dfs(5, 0)
print(result)
브루드 포스 풀이의 경우는 시간초과
dfs 탐색을 통한 풀이
anta tica에 포함되는 알파벳은 cur 배열
cur에 해당되지 않는 알파벳은 alphabet
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- SEB43
- 브루드포스
- SEB 43기
- 프론트엔드
- 기술면접
- Python
- dfs
- SEB43기
- useContext
- 백준
- 회고
- 코드스테이츠
- til
- 그리디 알고리즘
- Redux
- seb
- 개인 프로젝트
- React quill
- 인적성
- 코테
- SEB 43
- 프리프로젝트
- dictionary
- 스택오버플로우
- 다이나믹 프로그래밍
- BFS
- 감정 일기장
- 감정일기장
- 프로젝트
- 프로그래머스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함