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
													
											
												
												- Semantic Segmentation
- DilatedNet
- 나는 리뷰어다
- TEAM EDA
- 프로그래머스
- 코딩테스트
- 3줄 논문
- 나는리뷰어다
- Recsys-KR
- pytorch
- Segmentation
- 엘리스
- Object Detection
- 입문
- DFS
- 알고리즘
- 추천시스템
- Image Segmentation
- hackerrank
- 한빛미디어
- TEAM-EDA
- 협업필터링
- 큐
- Machine Learning Advanced
- Python
- 파이썬
- MySQL
- 스택
- eda
- 튜토리얼
													Archives
													
											
												
												- Today
- Total
TEAM EDA
[엘리스] 엘리스의 동물어 수업 본문
엘리스의 동물어 수업
코더랜드에는 말을 할 수 있는 동물들이 모여사는 aniski 나라가 있습니다. 이 나라의 동물들은 aniski어라는 조금 특별한 언어를 사용합니다. aniski어는 특이하게도 모든 말을 "ani"로 시작해서 "ski"로 끝이 납니다.
엘리스는 이 나라에 동물어 학습지를 판매 하고 있습니다. 홍보를 위해 짧은 시간 동안 동물 어린이들에게 글자를 가르쳐서 얼마나 효과가 좋은 지 증명하려고 합니다. 엘리스가 몇 개의 글자를 가르쳤을 때 동물 어린이들이 배울수 있는 단어는 몇 개나 될까요?

입력 예시 1
7
3
anircski
anihelloski
anirzcski출력 예시 1
1입력 예시 2
8
3
anircski
anihelloski
anirzcski출력 예시 2
2입력
- 첫 번째 줄에 엘리스가 가르친 글자의 숫자가 주어집니다. 이 글자의 수는 0이상 26이하의 알파벳 소문자입니다.
- 두 번째 줄에는 aniski어의 단어의 수가 주어집니다. 이 수는 1이상 100 이하 입니다.
- 세 번째 줄부터 aniski어의 단어가 주어집니다. 이 단어는 중복 되지 않음이 보장됩니다.
출력
- 학생들이 읽을 수 있는 단어의 개수의 최댓값을 출력하세요.
모범 답안
- a, i, k, n, s는 모든 단어에 들어가므로 5개를 제외
- 3가지 경우로 나누어서 dfs를 진행
- 
- 알파벳을 모두 추가한 경우
- 단어별로 몇개나 학습이 가능한지 계산
- 가장 긴 숫자를 반환
 
 
- 알파벳을 모두 추가한 경우
- 
- 알파벳을 하나도 추가하지 않은 경우
- a부터 z까지 차례대로 하나씩 넣어보면서 진행
 
 
- 알파벳을 하나도 추가하지 않은 경우
- 
- 알파벳을 하나라도 추가한 경우
- 추가한 알파벳 이후로 조사(알파벳은 순서가 상관없기에 무방)
 
 
- 알파벳을 하나라도 추가한 경우
 
- 
def to(st):
    tl = st.replace('a','').replace('i','').replace('k','').replace('n','').replace('s','')
    return tl
def ct(st, tst):
    for x in st:
        if x not in tst: return False
    return True
def gs(st):
    global max_word
    # 알파벳을 모두 추가한 경우 
    if len(st) == k:
        this_len = 0
        for x in range(n):
            if ct(s[x], st): this_len += 1
        if max_word < this_len: max_word = this_len
    # a, i, k, n, s이외의 알파벳을 하나도 추가하지 못한 경우 
    elif len(st) == 0:
        # ord는 문자열을 순자로 반환 <-> char는 숫자를 문자열로 반환 
        for x in range(ord('a'), ord('z') + 1):
            if x == ord('a') or x == ord('i') or x == ord('k') or x == ord('n') or x == ord('s'): continue
            # 모든 문자열에 대해 진행 
            gs(st + chr(x))
    # a, i, k, n, s이외의 알파벳을 하나라도 추가한 경우 
    else:
        # 추가한 알파벳이후로 계산 
        # 알파벳은 순서가 상관없기에 st[-1]이후로 해줘도 무방함 
        for x in range(ord(st[-1]) + 1, ord('z') + 1):
            if x == ord('a') or x == ord('i') or x == ord('k') or x == ord('n') or x == ord('s'): continue
            # 모든 문자열에 대해 진행 
            gs(st + chr(x))
k = int(input())
n = int(input())
s = []
max_word = 0
k -= 5
for x in range(n): 
    s.append(to(input()))
if k < 0: 
    print(0)
else:
    gs('')
    print(max_word)
출처 : 엘리스 아카데미, https://academy.elice.io/learn
'EDA Study > 알고리즘' 카테고리의 다른 글
| [엘리스] 두 번째 최대값 (0) | 2020.03.28 | 
|---|---|
| [엘리스] 이진트리 만들기 (0) | 2020.03.28 | 
| [엘리스] 스도쿠 마스터 (0) | 2020.03.27 | 
| [엘리스] 숫자놀이 (0) | 2020.03.27 | 
| [엘리스] 흰토끼의 장사하자 (0) | 2020.03.26 | 
