emrdbs123   2년 전

저는 brute force를 이용해 가능한 모든 경우를 탐색하는데 예시의

3 6
antarctica
antahellotica
antacartica

같은경우는

a n t i c 를 제외한 r h e l o 중  1개(6-5)개 를 조합 으로 접근하고자 하였습니다. 이때

do while next permutation을 위한 배열 idx의 선언 하는 방식에 문제가 있었습니다.

위의 경우는 5C1이 적용되어 idx : (0, 0, 0, 0, 1)을 permutation하여 가능한 모든 조합 탐색이 가능하지만

2 25
antatica
antaztica

같은 경우는 배울 수 있는 알파벳 수에 비에 T-5의 값이 지나치게 커서 idx를 선언 하는  방식에 문제가 생겼습니다.

idx를 선언 하는 방식을 조정하거나 해당경우 모든 단어를 배울 수 있으므로 N을 출력해주면 해결됩니다.

jacksonpark   2년 전

두 번째 케이스를 저도 생각 못했네요.

다행히 입력받은 단어들의 갯수보다 K가 크면 N개 출력하는 것으로 바꾸니 바로 맞았습니다.

좋은 반례 감사합니다~~ :)

ny2485   1년 전

우와 이걸 어떻게 생각하나요ㅠ 해당 반례 고려하여 정답받았습니다. 많이 배우고 갑니다

corruptangle   1년 전

한참 고민하다가 알려주신 반례로 맞췄네요.

도움 주셔서 감사합니다.

cloudest   1년 전

저도 50% 부분에서 계속 틀렸는데 올려주신 이유 보고 고쳐서 통과했습니다. 정말 감사합니다.

혹시 파이썬 사용자 분 중에 저랑 비슷한 방식으로 풀다가 틀리신 분들을 위해 첨언하자면, 

1. 모든 단어 중 내가 배워야 하는 단어만 set으로 추려낸다(중복되는 단어를 제거하기 위함)

2. 추려낸 set에서 K-5개만큼 단어를 combinations 으로 골라내서 brute force 방식으로 다 해보면서 최댓 개수를 갱신

와 같은 방식으로 풀었습니다. 

만약 저런 방식으로 풀었고 동일한 부분에서 틀렸다면, 아래 소스코드(파이썬)를 테스트로 돌려보시는 걸 추천합니다.

다음부터는 문제 풀 때 combinations 툴을 아예 쓰지 말든가, 아니면 combinations(A, b)에서 len(A) < b인 경우 예외처리하는 걸 꼭 암기해두어야겠네요.

댓글을 작성하려면 로그인해야 합니다.