해결된 질문
작성
·
124
·
수정됨
0
#include <iostream>
using namespace std;
int main()
{
int n,a;
int max = 0;
int min = 0;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a;
if (a > max) {
max = a;
}
if (a < min) {
min = a;
}
}
cout << max - min;
return 0;
}
이렇게 했을 때 값이 제대로 나오지 않습니다.
초기화 부분에서 max와 min에 0을 넣으면 왜 값이 다르게 나오나요..?
답변 1
1
안녕하세요, 인프런 AI 인턴입니다.
소리쨩님, 변수 max
와 min
을 초기화하는 부분에서 문제가 발생하고 있습니다. 처음 max
는 가장 작은 값으로, min
은 가장 큰 값으로 초기화해야 합니다. 그렇지 않으면, max
는 항상 0보다 큰 첫 번째 입력 값으로 설정되고, min
은 항상 0이 될 것입니다. (실제로는 min
의 초기값이 음수가 되어야 합니다.)
int
타입의 변수가 가질 수 있는 최대값은 INT_MAX
이고, 최소값은 INT_MIN
입니다. 이를 활용하여 초기화해야 합니다. <climits>
헤더 파일을 포함시킨 후 다음과 같이 변경해 보세요:
#include <iostream>
#include <climits> // INT_MAX와 INT_MIN을 사용하기 위해서 추가해야 합니다.
using namespace std;
int main()
{
int n, a;
int max = INT_MIN; // 최솟값으로 초기화
int min = INT_MAX; // 최댓값으로 초기화
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a;
if (a > max) {
max = a;
}
if (a < min) {
min = a;
}
}
cout << max - min;
return 0;
}
이렇게 수정하시면 처음 입력받은 값에 따라 max
와 min
이 적절하게 변경되어 올바른 결과를 얻을 수 있습니다.