• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

1-G 9996번 재질문입니다!

24.04.16 18:18 작성 24.04.16 20:46 수정 조회수 68

0

안녕하세요 선생님 :)

 

선생님께서 푸신 풀이에서 하나를 입력하면 그에 대한 출력이 바로 나오는 것이 마음에 들지 않아서 모든 입력을 넣어야 출력이 나오도록 코드를 변경해보려고 했습니다.

 

vector 컨테이너를 사용해서 입력된 문자열들을 컨테이너에 담고, 인덱스에 알맞는 문자열을 꺼내와서 DA인지 NE인지 출력해보려고 했는데요, 자꾸 vector out of range 에러가 나옵니다.

 

왜 범위를 벗어난건지 모르겠어서 질문드립니다 ㅠㅠ

 

http://boj.kr/bc2da3a3773c401086b47cf818e8c0f1

답변 2

·

답변을 작성해보세요.

0

안녕하세요 유태님 ㅎㅎ

int num;
string input;
vector<string> str(num);

이거 자체가 이상한데요. ㅎㅎ

num이 정해져있지 않음 : 초기값은 0

그 다음의 그만큼의 vector를 생성한다 -> 0개의 vector를 생성하는 것입니다.

 

그 다음

{
	cin >> num;

유동적으로 입력을 받는다고 해서 전역변수로 초기에 설정한 0개짜리 vector가 갑자기 변한 num에 따라 생성되지는 않습니다.

 

따라서 이 때문에 에러가 발생되는 것 같습니다.

 

감사합니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.04.16

안녕하세요, 인프런 AI 인턴입니다. 한유태님의 경우입니다.

벡터에 관련된 에러, 특히 vector out of range 에러는 벡터의 인덱스를 접근할 때 벡터의 크기를 초과하여 접근하려고 할 때 발생합니다. 이러한 문제는 주로 반복문에서 반복 횟수를 벡터의 크기보다 크게 설정하거나, 벡터의 특정 인덱스에 접근하기 전에 해당 인덱스에 대한 값이 실제로 존재하는지 확인하지 않아서 발생할 수 있습니다.

아래는 비슷한 상황을 다루고 있는 예시들입니다. 제시된 URL들 안에서 유사한 문제를 해결하는 방법에 대한 힌트를 얻을 수 있습니다.

  • 벡터와 관련된 에러 처리: “1-G 출력 관련 질문입니다.” 질문에서는 벡터 혹은 배열의 처리와 관련된 질문이 주제였으나, 유태님의 질문에 필요한 정확한 에러 해결 방법을 제시하지 않아 직접적인 도움이 되지 않을 가능성이 큽니다.

  • 1-G 답안 제출할 때](https://www.inflearn.com/questions/753066) 질문에서도 벡터와 관련된 로직 문제를 다루고 있으나, 이 경우 역시 ‘vector out of range’ 오류에 대한 구체적인 해결책을 제공하지 않습니다.

구체적으로, 한유태님의 경우 다음을 확인해보시길 권장합니다:
- 벡터에 원소를 추가하는 과정에서 정확히 얼마나 많은 원소가 추가되었는지 체크합니다.
- 반복문에서 벡터의 크기(vector.size())를 초과하지 않도록 합니다.
- 인덱스를 사용해 벡터의 원소에 접근하기 전에 해당 인덱스가 벡터의 크기 내에 있는지 확인합니다.

직접 코드를 검토하며 특정 인덱스에 접근하기 전에 벡터의 크기를 확인하는 로직을 추가해 보시는 것도 좋은 방법입니다. 예를 들어, if (index < vector.size()) 같은 조건문을 통해, 접근하려는 인덱스가 벡터의 크기보다 작은지를 항상 체크하는 것이 좋습니다.

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