ywc95518   1년 전

게시판와 제가 작성한 모든 케이스에 대해서 통과하는데 33%에서 틀렸다고 나옵니다.

str을 index로 순회하며 1인 경우와 0인 경우로 나누어서 생각하였습니다.

1. 시작이 1인 경우

index+1, index+2에 해당되는 문자가 00인지 확인하여 00이면 index 3증가, 00이 아닌경우 false 반환(NO 출력)

다음 index가 1일때까지 계속 index를 증가시켜주는데 100100 같은 경우에서 반례가 발생하기 때문에 1인경우 그다음 문자열 두개가 00인지 판단해서 그렇다면 while문 빠져나옴

2. 시작이 0인 경우

index+1에 해당되는 문자가 1인 경우 index 2 증가, 아닌 경우 false 반환 (NO 출력)


위의 경우를 모두 통과하면 YES 출력


정규표현식으로 통과는 했지만 직접 구현으로 왜 통과가 안되는지 궁금해서 질문남깁니다 반례 찾아주시면 감사하겠습니다 ㅠㅠ

applemade   1년 전

입력: 100001

답: YES

출력: NO

ywc95518   1년 전

왜 100001이 YES인지 설명 부탁드려도 될까요

앞에 100을 지우면 001이 나오는데 NO가 맞는 답이 아닌가요?

applemade   1년 전

(100+1+|01)+ 에서

(100+1+|01)을 한 번 사용하고

100+1+과 01 중에 100+1+를 선택한 경우입니다.

100+1+ = {1001, 10001,10011,100001,100011,100111, 1000001,1000011,1000111,1001111, ...} 이기 때문에 100001은 YES가 됩니다.

다르게 설명하자면 100+가 10000이 된거고, 1+은 1이 되어 100001이 된 것 입니다.

ywc95518   1년 전

아 이해했습니다 감사합니다 :)

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