[BaekJoon] 백준 1759번 : 암호 만들기

Updated:

1759번 : 암호 만들기


정렬된 암호를 좋아한다고 했기 때문에 순서가 없는 조합으로 만들면 된다.

두 가지 조건을 따져야 하는데, 우선 모음이 무조건 있어야 하고 자음은 최소 두 개 있어야 한다.

집합의 교집합과 차집합을 이용해 구할 수 있다.

먼저 모음 집합과 가능성이 있는 암호 집합의 교집합이 아무것도 없다면 이 암호는 모음이 없다는 의미이기 때문에 탈락시킨다.

다음으로 가능성이 있는 암호 집합에서 모음 집합을 뺐는데 길이가 1 이하라면 탈락시킨다.

처음에 모음 조건만 따지고 자음 조건은 따지질 않아 틀렸습니다를 받았다.

놓치는 조건이 없도록 꼼꼼히 조건을 따지는 노력을 하자..


from itertools import combinations


if __name__ == '__main__':
	l, c = map(int, input().rsplit())
	data = sorted(input().rsplit())

	vowel = {'a', 'e', 'i', 'o', 'u'}
	for val in list(combinations(data, l)):
		if set(val) & vowel and len(set(val) - vowel) >= 2:
			print(''.join(val))



Categories:

Updated:

Leave a comment