인프런 커뮤니티 질문&답변

Yujin Kang님의 프로필 이미지
Yujin Kang

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

1-M

1-M 벡터 사이즈 체크하면 오류 발생하는 이유

작성

·

33

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

안녕하세요

저는 벡터로 고민해서 풀었는데 강의 보고 수정해서 아래와 같이 정답을 얻었습니다.

http://boj.kr/cf7d8a2646b44ded93eead10652c3faa

 

기존 제 코드랑 비교하니 이 부분이 문제 였는데요

else if(s1.size()>2) break;

http://boj.kr/7069ece2a56f46f49d7a764d5457677f

 

단어는 어차피 A와 B로만 이루어져있고 같은 단어가 들어오면 pop해서 사이즈가 줄어들어 사이즈가 2가 넘을 이유는 없다고 생각하여 넣은 코드입니다.

1개차이로 다른 단어가 들어오면 좋은단어 조건이 안되니까 사이즈 체크한건데 왜 오류가 발생할까요?

(예를들어 ABA인 경우같이 B다음 1개차이로 A가 들어오는 경우)

 

저는 저 코드를 넣지 않으면 ABAAAAAAAAAAAAA와 같은 경우 불필요하게 끝까지 확인해야하니까... 필요한 부분이라고 생각했는데 어떤 부분을 잘못 생각한건지 알려주실 수 있을까요?

 

 

답변 2

1

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 유진님 ㅎㅎ

전반적으로 좋은 논리입니다.

이 때문에 반례찾느라 시간좀 들었어요 ㅎㅎ

1
ABABBABAABBA

유진님의 코드는 이 반례를 해결하지 못합니다. GOOD이 되어야 하고 카운팅되어야 합니다.


또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


Yujin Kang님의 프로필 이미지
Yujin Kang
질문자

이해됐습니다!! 감사합니다!

0

안녕하세요, 인프런 AI 인턴입니다.

Yujin Kang님이 질문해 주신 내용은 벡터의 사이즈를 체크하는 코드에서 문제점이 발생하는 이유에 대한 것입니다. 주로 처리해야 할 문자열이 ‘A’와 ‘B’로 이루어져 있는 경우에 대한 로직이 고려 대상입니다.

질문에서 제시한 코드에서는 else if(s1.size()>2) break; 문장이 문자열의 처리를 빨리 끝내기 위한 조건으로 사용되고 있습니다. 이 조건은 일반적으로 문자열의 앞부분에서 이미 충분히 판단할 수 있는 경우 즉시 종료하도록 설정한 것입니다. 이와 같은 설정이 문제가 되는 이유는 특정한 시점에서 문자열이 완벽히 분석되지 않았음에도 불구하고, 잘못된 규모의 벡터 크기를 사용하여 미리 최종 결론에 도달하려고 시도했기 때문일 수 있습니다.

여기서는 좋지 않은 단어에 대한 정의를 좀 더 정확하게 파악할 필요가 있습니다. ‘좋은 단어’의 조건이 “조금이라도 규칙에서 어긋나면 안 되는” 정도의 엄격성을 가진다면, 모든 가능성을 검토해야 할 필요가 있습니다. Yujin Kang님의 코드는 가능한 귀찮은 처리를 피하기 위한 것이지만 반대로 필요한 검토를 채 하지 못하여 오히려 문제를 야기하는 것으로 보입니다.

비슷한 문제와 답변, 고려 방법에 대한 사례를 확인해 보신다면 다음 링크를 추천드립니다:
- C++ Vector 사용 시 주의 사항: 관련된 내용으로 C++의 벡터 사용에 관한 질문과 답변을 확인해 보세요.

이 링크에서도 벡터 사용 시 발생할 수 있는 문제와 해결 방법을 제시하고 있습니다. 특히, 벡터와 관련된 알고리즘을 구현하며 발생할 수 있는 일반적인 실수를 다루고 있습니다.

저는 질문자님의 이해를 돕고자 기존의 인프런 커뮤니티 답변을 활용하여 유사한 사례를 추천해드렸습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점 있으시면, 이어서 질문해 주세요. 지식공유자님께서 곧 답변해 주실 것입니다.

Yujin Kang님의 프로필 이미지
Yujin Kang

작성한 질문수

질문하기