shin748   4년 전

자꾸 컴파일 에러가 떠서 원단어AB 사전단어BA를 해봤는데 Zero Division Error가 나오더군요.

설마 이거때문인가 싶어서 경우의 수에 포함시켰습니다.

그랬더니 이번엔 틀렸다고 나오더군요. 이게 원인이었나봅니다.

그런데 '사전의 시작, 중간, 끝에 단어를 추가한다' 라는 문장이 있는데도 저렇게 글자배열만 바꾸는 경우를 포함한다면 문제의 표현이 잘못된것 같습니다.

설마 몇 글자가 몇>=0 뭐 이런건 억지같고 오해의 여지가 있는듯 합니다.

아무튼 그렇다고 치더라도 워낙 질문도 없고 예제도 없다보니 질문올립니다.

wjsqjawns   4년 전

혹시 ZeroDivisionError가 발생했을 때, 설마 올려주신 코드처럼 find( ) 메소드를 사용해서 문자열의 합성 여부를 확인하셨나요?

그렇다면 작성자님이 스스로 "글자 배열을 바꾸는 경우"를 인정하고 시작한 것입니다만...

ABC가 원래 단어, BCAB가 사전에 있는 단어라고 가정하죠.

해당 문제에서 바라는 것은, 원래 단어에 글자를 '추가'하여 사전에 있는 단어를 만드는 것입니다.

위의 경우에는 원래 단어로 사전에 있는 단어를 만들 수 없습니다. 원래 단어에서 C를 빼거나, 혹은 위치를 옮겨야 하니까요.

하지만 만약 작성자님처럼 find( ) 메소드를 통해 글자의 유무를 확인하게 되면,

원래 단어로 사전에 있는 단어를 "만들 수 있다"고 판단하게 됩니다.

A, B, C 모두 BCAB라는 단어에 속해 있으니까요.

해당 문제를 풀 때에는 find( ) 메소드를 쓰면 의미가 없습니다.

글자 순서가 중요하니까요.

find( ) 메소드를 사용하는 것은, 그 순서를 무시하는 것입니다.

shin748   4년 전

저런 경우도 있군요 새삼 깨닫습니다..

어쨌든 결론은 그런 경우 역시 무시해야 하는 조건으로 만들어줘야 하는군요.

다른 방법을 강구해보겠습니다 감사합니다!

wjsqjawns   4년 전

find( ) 메소드를 쓰지 말고,

원래 단어가 그 순서를 유지하면서 사전 단어에 포함되는지 확인하시면 돼요.

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