티스토리 뷰
https://www.acmicpc.net/problem/1062
1062번: 가르침
첫째 줄에 단어의 개수 N과 K가 주어진다. N은 50보다 작거나 같은 자연수이고, K는 26보다 작거나 같은 자연수 또는 0이다. 둘째 줄부터 N개의 줄에 남극 언어의 단어가 주어진다. 단어는 영어 소문
www.acmicpc.net
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
- React quill
- SEB 43
- 스택오버플로우
- 회고
- 인적성
- 기술면접
- 그리디 알고리즘
- 프로젝트
- 다이나믹 프로그래밍
- SEB43
- Python
- Redux
- 백준
- dictionary
- 감정 일기장
- 코테
- 프리프로젝트
- dfs
- 프론트엔드
- SEB 43기
- 감정일기장
- BFS
- 프로그래머스
- 개인 프로젝트
- 코드스테이츠
- til
- SEB43기
- 브루드포스
- useContext
- seb
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함