2^26 >> 2^21이므로
2^21로 푸는 게 이득입니다. 2^26 = 6700만 정도 되네요. 2^21 = 209만 이지요. 32배나 차이납니다.
2^26으로 푸시려면, sub task에 대해서 O(1)이 보장되어야 하는데요.
wordlist1[i].equals("");
이건 별 영향을 끼치지 않을 겁니다. ""의 길이가 0이기 때문입니다.
문제는
wordlist1[j].replaceAll(String.valueOf((char)alphabetlist.get(i).intValue()), ""); 인데.
bbayu 5년 전
원래 이문제는
알파벳 a~z까지 각각 배운다. 배우지 않는다. 로 나뉘어 2^26의 시간복잡도를 갖는 조건으로 비트연산을 수행하여 풀더라고요.
제가 아래와 같이 풀이한 방식은 배워야 하는 알파벳 중에서 조합을 이용하여 풀었는데요. 왜 시간초과가 나는지 잘 모르겠습니다..
아래 소스코드에 ★ 표시와 함께 질문을 달아놓았습니다.
해당 부분에서 궁금한 사항이 생겼는데 답해주시면 감사하겠습니다 ! ^^