[DICTIONARY] 문제는 맞췄는데 이해가 안되는 부분이 있습니다.

  • bigroadaz
    bigroadaz

    DICTIONARY

    정답은 맞았는데, 이해가 잘 가지 않는 부분이 있습니다.

    의존성 그래프를 생성하기 위해 인접한 두 단어의 차이를 찾을 때, for문을 이용했습니다.

    for 문을 이용해서 두 단어의 첫번째알파벳, 두번째알파벳, 세번째알파벳....
    이렇게 비교하다가 글자가 다르면 의존성을 기록하고 "break"하도록 구현했습니다.

    이 for문의 종료 조건으로 두 단어 길이의 minimum을 취하도록 하면 문제가 없습니다.
    그런데 두 단어 중 먼저 오는 단어의 길이로 종료 조건을 취하면 segmentation fault(런타임에러)가 납니다.

    이런 에러가 나는 이유가 왜인지 전혀 모르겠습니다.
    왜냐하면 제 코드는, 두 단어에서 차이가 나는 알파벳을 발견하면 break하도록 되어있기 때문입니다.
    "사전순"이라면, 먼저 오는 단어가 뒤따라 오는 단어의 prefix일 수는 있어도 뒤에오는 단어가 바로 앞 단어의 prefix일 수는 없을텐데...

    for문의 종료 조건으로 먼저 오는 단어의 길이를 취했을 때, 도대체 어떤 경우 때문에 이런 에러가 발생하는지 궁금합니다.


    9년 전
2개의 댓글이 있습니다.
  • restart
    restart

    문제에 명확히 나오지 않은 부분입니다. ^^; 실제로 테스트 케이스에 뒤따라 나오는 단어가 앞의 단어의 prefix인 경우가 존재하는데, 이건 따지고 보면 '사전순'이라고 볼 순 없죠.. 그렇다고 INVALID HYPOTHESIS라 출력하기에도 명확하게 주어진 바가 없습니다. ㅜㅜ


    9년 전 link
  • bigroadaz
    bigroadaz

    아 그런거군요ㅋㅋ 제가 생각하기에는 그 부분은 고쳐져야 될 것 같네요... 문제에 명시되어 있기를 "이 언어에서는 알파벳들의 순서가 영어와 서로 다를 뿐, 사전의 단어들은 사전 순서대로 배치되어 있다"라고 되어 있는데, 말씀하셨듯이 prefix가 뒤에 온다면 "알파벳들의 순서만 다를 뿐 사전순"인 것이 아니게 되니까요


    9년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.