강의

멘토링

로드맵

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

원재님의 프로필 이미지
원재

작성한 질문수

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

3-G 와 테스트케이스 팁

3-G 질문 있습니다.

해결된 질문

작성

·

16

0

안녕하세요 큰돌님:)

  1. http://boj.kr/ce48f0ed41804d029b73101bd51865a7

  2. http://boj.kr/8d266616a48c4b569934a028012b5076

1번 코드는 맞고 2번 코드는 틀린 이유는 뭔가요??

1번 코드는 방문을 0 ~ 100,000까지만 가능하게 했고 생각해보니 수빈이가 10만을 넘어간다음 -1을 이용해 더빨리 찾을 수도 있는 생각에 20만까지 max를 설정해서 다시 제출하니 틀렸다고 나옵니다.

답변 2

0

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

안녕하세요 ㅎㅎ

        for(int i=0; i<3; i++){
            int nx = cal(x, i);
            if(nx >=0 && nx <= MAX) {

이부분 때문에 그렇습니다. 배열 자체는 MAX - 1까지 참조가능한데 MAX까지 참조하게 만들어서 그렇습니다.

이부분을 고쳐보시겠어요?

 

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. 원재님, 질문해 주셔서 감사합니다.

질문 내용을 통해 두 가지 전제 조건을 비교하며 문제를 풀고 계신 것을 알 수 있었습니다. 1번 코드는 맞고 2번 코드가 틀린 이유는 코드의 조건 설정과 관련이 있을 수 있습니다.

  1. 인덱스 범위 초과: 일반적으로 배열이나 벡터를 사용할 때는 인덱스 범위를 초과하지 않는 것이 중요합니다. C++에서는 배열의 크기를 넘어 접근할 경우, 이상한 값이 나오거나 프로그램이 예기치 않게 종료될 수 있습니다. 1번 코드는 특정 범위 내에서만 작업을 수행하며 안전한 반면, 2번 코드에서 범위를 확장하여 잘못된 참조가 일어날 가능성이 있습니다.

  2. 로직의 차이: 제공하신 링크의 문제는 수빈이가 100,000을 넘어서 다시 뒤로 오는 상황을 고려하는 경우일 수 있습니다. 이 때, 알고리즘이 이러한 상태들을 효과적으로 처리하고 있는지 확인하는 것이 중요합니다. 확장된 범위 내에서 모든 경우를 제대로 다루지 못하면 코드 실행에 문제가 발생합니다.

관련된 문제와 해결방법에 대한 링크를 제공하여 도움을 드리고자 합니다:

이 문제들을 통해 해결책을 찾는 데 도움되셨으면 합니다. 코드의 전반적인 로직을 재검토하시고 범위를 확장하는 경우엔 늘 조건 처리를 유념하시면 좋을 것 같습니다.

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

원재님의 프로필 이미지
원재

작성한 질문수

질문하기