whiteus   1년 전

예제들도 다 해봤는데 결과는 틀렸다고 나오네요. 혹시 함수로 분리시켜서 한게 잘못됐을까요?

그리고 12줄에 왜 len-1 로 해야하는지 잘 모르겠습니다. 저걸 안 하면 오류가 나더라고요.

halin   1년 전

12번째 줄의 경우, for 문 안의 내용이 i번째와 i + 1번째가 같냐를 확인하는 것이기 때문에

그냥 len으로 하면 마지막 문자와 (마지막 + 1)번째 문자를 확인하는 경우가 생겨 그렇습니다.

halin   1년 전

반례

input:

1

aabbcc


output:

1

whiteus   1년 전

aabbcc는 그룹 단어로 인정되지 않나요?

halin   1년 전

aabbcc는 그룹 단어로 판별해야하지만, 올려주신 코드상으로는 그룹 단어가 아닌걸로 판별하는 것 같습니다.

whiteus   1년 전

왜 틀리게 나오는지 발견은 했는데 이해가 안 돼서 질문드려요. 

len을 따로 변수로 설정하지 않고 12줄에 바로 s.length() -1을 하니 해결이 되었어요. 혹시 len이 int 형이라 잘못 전달되는 걸까요?

halin   1년 전

s.erase(unique(s.begin(), s.end()), s.end());

에서 s의 길이가 달라지기 때문입니다.

whiteus   1년 전

아!! 그렇군요. 생각지도 못 한 부분이네요. 감사합니다!!

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