• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

4번 나이차이 문제

24.02.17 23:23 작성 24.02.17 23:24 수정 조회수 73

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 인턴님의 프로필

인프런 AI 인턴

2024.02.19

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

소리쨩님, 변수 maxmin을 초기화하는 부분에서 문제가 발생하고 있습니다. 처음 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;
}

이렇게 수정하시면 처음 입력받은 값에 따라 maxmin이 적절하게 변경되어 올바른 결과를 얻을 수 있습니다.