IT recording...
[BOJ] 1759 암호 만들기 - python 본문
풀이
- 딱 보자마자 combination 이용해야겠다고 생각 든 문제
import sys
from itertools import combinations
def input():
return sys.stdin.readline().rstrip()
L,C = map(int,input().split(" "))
letter = list(input().split(" "))
standard_vowels = {"a","e","i","o","u"}
vowel = set() #모음
consonant = set() #자음
for l in letter: #모음,자음 분류하기
if l in standard_vowels:
vowel.add(l)
else:
consonant.add(l)
answer = []
for i in range(1,len(vowel)+1):
if L-i >= 2:
vowel_collection = list(combinations(vowel,i))
consonant_collection = list(combinations(consonant,L-i))
for vc in vowel_collection:
for cc in consonant_collection:
answer.append(vc+cc)
answer_str = []
for a in answer:
answer_str.append(''.join(sorted(a)))
answer_str.sort()
for a in answer_str:
print(a)
다른 사람 풀이
from itertools import combinations
L, C = map(int, input().split())
chars = sorted(input().split())
for string in combinations(chars, L):
aeiou, not_aeiou = 0, 0
for i in range(len(string)):
if string[i] in 'aeiou':
aeiou += 1
else:
not_aeiou += 1
if aeiou >= 1 and not_aeiou >= 2:
print(''.join(string))
얻어가는 것
- Combination
from itertools import combinations vowel_collection = list(combinations(vowel,i))
- string에 특정 문자 존재하는지 확인하기
for s in string: if s in 'aeiou': #존재 else: #존재x
- sort / sorting → list, str 소팅이 가능하다.
#sort list.sort() #반환값이 없다. list.sort(reverse=False) #내림차순 #sorted result = sorted(list) #반환값이 존재한다. result = sorted(list,reverse = False) #내림차순 + 튜플의 소팅이 가능함.
- 리스트 합치기
one = [1,2] two = [3,4,5] byPlus = one **+** two #[1,2,3,4,5] byExtend = one.**extend**(two) #[1,2,3,4,5]
느낀점
"211009"
소요 시간 : 30min
- 간단한 문자열에 관한 문제였다.
- sort에 대한 개념과 문자열에 대한 개념을 다시 생각할 수 있었던 문제
'Algorithm' 카테고리의 다른 글
[BOJ] 11659 구간 합 구하기 4 - python (0) | 2021.12.02 |
---|---|
[BOJ] 2580 스도쿠 - python (0) | 2021.12.02 |
[BOJ] 1920 수 찾기 - python (0) | 2021.12.02 |
[BOJ] 1039 교환 - python (0) | 2021.12.02 |
[BOJ] 1103 게임 - python (0) | 2021.12.02 |
Comments