728x90
99클럽 스터디 7일차 TIL + 그래프이론(프로그래머스 모음사전)
오늘의 학습 키워드
- 순열과 조합(itertools)
- product 함수
- 문자열 처리
공부한 내용 본인의 언어로 정리하기
product 풀이
- itertools.product()
- 주어진 배열에서 중복을 허용하여 특정 길이의 모든 조합을 만들어내는 함수
- repeat 파라미터로 조합의 길이를 조절
- 문자열 처리
- join() 함수를 사용하여 튜플로 된 문자들을 하나의 문자열로 합치기
- 리스트에 저장된 모든 가능한 조합들을 정렬하여 사전 순서 만들기
import itertools
def solution(word):
alphabet = list("AEIOU")
a_list = []
for i in range(5):
for k in list(itertools.product(alphabet, repeat=i + 1)):
a_list.append("".join(k))
a_list.sort()
return a_list.index(word) + 1
DFS 풀이
- 각 노드는 하나의 단어를 표현하고, 자식 노드는 현재 단어에 A, E, I, O, U를 붙인 새로운 단어 형태
def solution(word):
# 모음 리스트
vowels = ['A', 'E', 'I', 'O', 'U']
word_list = []
def dfs(current_word):
# 현재 단어를 리스트에 추가
if current_word:
word_list.append(current_word)
# 단어 길이가 5 이상이면 더 이상 탐색하지 않음
if len(current_word) >= 5:
return
# 현재 단어에 각 모음을 붙여서 DFS 탐색
for vowel in vowels:
dfs(current_word + vowel)
# 빈 문자열부터 시작하여 DFS 탐색
dfs("")
# word의 인덱스 찾기 (1부터 시작하므로 +1)
return word_list.index(word) + 1
오늘의 회고
문제를 보고 풀이가 도저히 생각나지 않아 다른 사람의 풀이를 참고하였다. 대부분의 풀이가 itertools의 product함수를 활용한 풀이이다. 모든 가능한 조합에 대한 경우를 리스트로 만들고 for문을 활용해서 word와 동일한 경우에 도착하면 멈추는 형태이다. 그런데 항해 99의 힌트에 따르면 그래프 이론 즉, DFS를 활용한 풀이도 가능하였다. 이와 같이 문제에 따라서 다양한 풀이방법으로 접근할 수 있는 역량이 필요할 것 같다.
728x90
반응형
'Algorithm > 항해99' 카테고리의 다른 글
[항해99] 99클럽 코테 스터디 9일차 TIL + (BFS 백준 7562 나이트의 이동) (2) | 2024.11.05 |
---|---|
[항해 99] 99클럽 코테 스터디 8일차 TIL + DFS(백준 2644) (2) | 2024.11.04 |
[항해99] 99클럽 코테 스터디 6일차 TIL + 이분탐색(백준 2805 나무 자르기) (0) | 2024.11.02 |
[항해99] 99클럽 코테 스터디 5일차 TIL + BFS(백준 24444번) (0) | 2024.11.01 |
[항해99] 99클럽 코테 스터디 4일차 TIL + DFS(백준 24479) (0) | 2024.10.31 |