기타등등/알고리즘 기록

[C++] 나이차이

CodeJB 2021. 6. 16. 15:23

#include <iostream>

using namespace std;

int main() {
    int N, a, i, max = -2147000000, min = 2147000000;
    //integer 자료형에 들어갈 수 있는 가장 작은 값과 가장큰 값으로 초기화하였다. 그냥 외우자
    //이렇게 하면 무조건 첫 입력값은 max min 둘 다에 할당된다.
    
    cin >> N;
    for(i = 1; i<=N; i++){
        cin >> a;
        if(a > max) max = a; // 첫 입력값이 max에 들어가 있으므로 그 다음값들과 비교하는 방식이다.
        if(a < min) min = a;
    }
    cout << max - min;   
    
    return 0;
}

성찰

  • 개수 입력 이후, 그 개수만큼 값을 입력하는 것을 보고 바로 배열을 떠올렸다.
  • 배열에 값들을 할당하고 인덱스만큼 2중 For문 돌려서 비교한다음 가장 큰 값이 max에 올라오고 가장 작은 값이 min에 올라오는 것을 생각했다.
  • 위 코드에 비하면 엄청나게 비효율적인 방법이다. 어찌보면 정말 간단한 문제인데도 여러 값을 입력해야하는 문제에서 무조건 배열을 떠올렸기 때문에 발생한 실수이다..
  • 배열부터 떠올리는 습관을 반드시 고칠 필요성을 느낀다.