링크 : https://www.acmicpc.net/problem/1759
- 문제
- 소요시간: 10분 53초
- 설계하기(접근방법)
1. 입력받기
가능한 문자 리스트를 입력받는다
2. 구현하기
문제의 조건은 모음 1개이상과 자음 2개 이상을 사용한 단어를 만들어야한다는 것이다
모음과 자음으로 나누고 그 중에서 가능한 경우의 수를 뽑아 정렬할까 고민했지만,
그냥 가능한 모든 경우의 수를 만든 후에,
모음cnt와 자음cnt로 각 단어의 자음모음 개수를 세서
조건에 부합하는 경우에만 가능한 문자 조합을 먼저 추출했다
그 후에, 각 조합을 알파벳순으로 정렬한후,
가능한 문자 조합 전체 리스트를 정렬해서 출력한다.
3. 출력하기
가능한 문자를 ''.join을 통해 출력한다
- 코드(출력)
from itertools import permutations, combinations
l,c = map(int, (input().split()))
word = list(input().split())
word_all = list(combinations(word, l))
word_possi = []
for i in word_all:
m_cnt = 0
z_cnt = 0
for j in i:
if j in 'aeiou':
m_cnt += 1
else:
z_cnt += 1
if m_cnt >=1 and z_cnt >= 2:
word_possi.append(list(i))
for i in word_possi:
i.sort()
word_possi.sort()
for i in word_possi:
print(''.join(i))
- 얻어갈 부분
1. 조합과 순열 함수는 itertools에서 불러오고, 들어오는 인자의 순서는 iter가능한 객체와 숫자 순임을 명심하자
'알고리즘(백준) > 구현' 카테고리의 다른 글
[알고리즘/구현] 1148번 : 단어 만들기 - python (1) | 2024.10.12 |
---|---|
[알고리즘/구현] 16918번 : 봄버맨 - python (0) | 2024.10.09 |
[알고리즘/구현] 25206번 : 너의 평점은 - python (0) | 2024.09.21 |
[알고리즘/구현] 3085번 : 사탕 게임 - python (0) | 2024.06.07 |
[알고리즘/구현] 18111번 : 마인크래프트 - python (0) | 2024.05.22 |