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

whico님의 프로필 이미지
whico

작성한 질문수

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

5-R

안녕하세요 5-R 주사위 윷놀이 질문이 있습니다.

해결된 질문

작성

·

266

0

#include<bits/stdc++.h>

using namespace std;

const int INF = 987654321;

int a[14], mal[4], n = 10;

int v[104];

에서 원소 값을 넣어주는 int v[104]; 의 배열 크기가 70, 80으로 해보면 값이 달라지는 것을 확인을 했습니다.

실제로 31까지 밖에 인덱스를 사용하지 않음에도 불구하고 100 이상으로 배열의 크기를 올려줘야 하는 이유는 무엇일까요?

통상적으로 +3정도 배열의 크기를 잡아주었습니다! 이번 예시로 앞으로 배열의 크기를 잡을 때 3배 정도의 크기로 잡아주어야 하나 고민을 하게 되었습니다.

답변 3

0

whico님의 프로필 이미지
whico
질문자

제공해주신 문제 해설 코드을 수정해서 v[104] -> v[70]으로 해주면 실패가 나오고 v[80]으로 해주면 성공이 나오네요! 일단 교안을 참고로 배열은 가능한 넓게 사용하도록 하겠습니다!

0

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

안녕하세요 ㅎㅎ

에서 원소 값을 넣어주는 int v[104]; 의 배열 크기가 70, 80으로 해보면 값이 달라지는 것을 확인을 했습니다.

>> 혹시 답이 달라지나요? 답이 달라진다면 달라지는 전체 코드 2개 부탁드립니다.

 

해당 부분은 교안내의 다음 부분 참고 부탁드립니다.

배열의 경우 조금 더 넓게

 

0

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

int v[104]; 배열의 크기를 넉넉하게 잡는 이유는 프로그램이 실행되는 동안 배열을 인덱스 범위를 넘어서 접근하는 오류를 방지하기 위함입니다. 배열의 크기를 작게 설정하면 실행 과정에서 예상치 못한 인덱스 접근이 발생할 수 있으며, 이는 배열의 크기를 넘어선 메모리 영역을 참조하게 되어 버퍼 오버플로우나 다른 변수나 메모리의 값들을 덮어쓰는 등의 치명적인 오류를 초래할 수 있습니다.

프로그램에서 실제로 사용하는 인덱스의 최대값을 정확하게 알 수 있으면 그에 맞춰 배열의 크기를 설정하는 것이 좋습니다. 하지만, 모든 경우를 예측하기 어렵거나 동적으로 인덱스가 변할 수 있는 상황이라면 여유롭게 배열의 크기를 설정하는 것이 안전합니다.

이번에 3배 정도의 크기로 배열을 설정하는 것이 좋을지에 대해서는, 문제의 요구 사항과 인덱스가 사용되는 패턴을 고려하여 적절한 크기를 선택해야 합니다. 예를 들어, 윷놀이 같은 경우에는 게임판의 크기, 말의 이동 경로, 점수판의 크기 등을 고려하여 배열의 크기를 설정해야 합니다.

즉, 배열의 크기는 프로그램의 요구 사항과 안전성을 종합적으로 고려하여 결정해야 하는데, 이는 고정된 규칙이 아닌 경험과 상황에 따른 판단이 필요한 부분입니다.

whico님의 프로필 이미지
whico

작성한 질문수

질문하기