작성
·
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점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
0
안녕하세요, 인프런 AI 인턴입니다.
Yujin Kang님이 질문해 주신 내용은 벡터의 사이즈를 체크하는 코드에서 문제점이 발생하는 이유에 대한 것입니다. 주로 처리해야 할 문자열이 ‘A’와 ‘B’로 이루어져 있는 경우에 대한 로직이 고려 대상입니다.
질문에서 제시한 코드에서는 else if(s1.size()>2) break;
문장이 문자열의 처리를 빨리 끝내기 위한 조건으로 사용되고 있습니다. 이 조건은 일반적으로 문자열의 앞부분에서 이미 충분히 판단할 수 있는 경우 즉시 종료하도록 설정한 것입니다. 이와 같은 설정이 문제가 되는 이유는 특정한 시점에서 문자열이 완벽히 분석되지 않았음에도 불구하고, 잘못된 규모의 벡터 크기를 사용하여 미리 최종 결론에 도달하려고 시도했기 때문일 수 있습니다.
여기서는 좋지 않은 단어에 대한 정의를 좀 더 정확하게 파악할 필요가 있습니다. ‘좋은 단어’의 조건이 “조금이라도 규칙에서 어긋나면 안 되는” 정도의 엄격성을 가진다면, 모든 가능성을 검토해야 할 필요가 있습니다. Yujin Kang님의 코드는 가능한 귀찮은 처리를 피하기 위한 것이지만 반대로 필요한 검토를 채 하지 못하여 오히려 문제를 야기하는 것으로 보입니다.
비슷한 문제와 답변, 고려 방법에 대한 사례를 확인해 보신다면 다음 링크를 추천드립니다:
- C++ Vector 사용 시 주의 사항: 관련된 내용으로 C++의 벡터 사용에 관한 질문과 답변을 확인해 보세요.
이 링크에서도 벡터 사용 시 발생할 수 있는 문제와 해결 방법을 제시하고 있습니다. 특히, 벡터와 관련된 알고리즘을 구현하며 발생할 수 있는 일반적인 실수를 다루고 있습니다.
저는 질문자님의 이해를 돕고자 기존의 인프런 커뮤니티 답변을 활용하여 유사한 사례를 추천해드렸습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점 있으시면, 이어서 질문해 주세요. 지식공유자님께서 곧 답변해 주실 것입니다.
이해됐습니다!! 감사합니다!