인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

brigade98님의 프로필 이미지

작성한 질문수

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

1-D

1-D 왜틀

해결된 질문

작성

·

32

0

안녕하세요, 큰돌님.

http://boj.kr/d79121f090df454eb46693fcd385e667

1-D 회문 문제인데, 저는 vector를 사용해서 풀어보았습니다.

하지만 어떤 문자열을 넣어도 항상 1(회문)을 출력하여 틀리게 됩니다.

어느 부분이 틀린 건가요?

그리고 제가 배열이 나오면 항상 벡터를 사용하려고 하는데 좋지 않은 습관일까요?

답변 2

0

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

안녕하세요 ㅎㅎ

vector<string> v, m;
string s;
int cnt;
int main(){
    cin >> s;
    m.push_back(s);
    v.push_back(s);
    reverse(m.begin(), m.end());

s는 string이고 m은 string으로 가득한 배열입니다. 입력에는 단 한개의 string만 들어오기 때문에 m, v 모두 1개짜리 string을 가진 배열이 되버리는 것이죠.

제 생각에는 string 하나를 받아서 해당 string을 역순으로 해서 비교하는 것을 의도하신게 아닐까요?

이 때 string으로 이루어진 배열은 필요없습니다. string 자체가 문자(char) 여러개로 이루어진 배열이기 때문에 해당 부분을 그대로 이용하시면 됩니다.

 

그리고 제가 배열이 나오면 항상 벡터를 사용하려고 하는데 좋지 않은 습관일까요?

-> 유동적인 것은 vector, 그렇지 않다면 그냥 array를 쓰는게 더 좋긴 합니다 ㅎㅎ


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

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

감사합니다.

강사 큰돌 올림.


 

 

0

인프런 AI 인턴님의 프로필 이미지

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

brigade98님, 1-D 회문 문제를 벡터를 사용하여 풀어보셨군요. 하지만 모든 문자열에서 항상 1이 출력되는 문제를 겪고 계신 것 같습니다. 이 문제는 대개 모든 입력 문자열에 대해 회문 여부를 올바르게 판별하지 못하고, 잘못된 로직이나 조건문 처리에 문제가 있을 수 있습니다. 관련된 유사 답변을 통해 해결 방법을 찾을 수 있습니다.

회문의 정의 및 벡터 사용에 대하여

회문은 앞에서 읽으나 뒤에서 읽으나 동일한 문자열을 의미합니다. 예를 들어 ‘racecar’나 ‘level’ 등이 있습니다. 문자열의 앞과 뒤에서 중앙을 향해 비교하는 방식으로 문제를 풀 수 있습니다.

벡터를 사용하는 것은 C++에서 매우 유용하지만, 성능 면에서 배열보다 느릴 수 있어 상황에 따라 적절히 선택해야 합니다. 특히, 고정된 크기의 데이터를 취급할 때는 배열이 더 적합할 수 있습니다.

참고할 만한 유사 질문 답변들:

유용한 힌트 및 제안:
- 문자열의 길이: 문자열의 절반 길이만큼을 기준으로 양 끝에서 문자를 비교하는 로직이 필요합니다.
- 벡터의 사용: 벡터를 쓰는 것은 좋지만, 크기가 고정적이거나 메모리 사용이 중요하다면 배열이 더 적합할 수도 있습니다.

제시된 답변들을 통해 본 질문의 로직을 재검토해보시기 바랍니다. 추가적인 검토 후에도 문제가 해결되지 않으면, 코드를 보다 구체적으로 분석해 추가적인 도움을 받을 수 있습니다.

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