백준(C++)

[코딩 테스트 연습(C++)] 백준(BOJ) 10818번 _ 최소, 최대

mingchin 2023. 4. 16. 19:04
728x90
반응형

https://www.acmicpc.net/problem/10818

 

10818번: 최소, 최대

첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.

www.acmicpc.net

[문제]

N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.

[입력]

첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.

[출력]

첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.

 

[아이디어]

1. C++에서 배열을 선언할 때는 고정된 길이(const)로 선언해야한다. 동적 할당을 위해서는 vector 객체를 사용한다.

2. 배열을 굳이 사용하지 않고 최솟값과 최댓값만을 관리할 수 있다.

3. argorithm을 include하면 sort 함수를 활용할 수 있다. 시작 index부터 일부 index까지의 sorting이 가능하다.

 

※ 파이썬과 달리 C++의 경우 선언한 배열의 index를 초과하는 값에 접근한다 하더라도, 에러가 발생하지 않을 수 있다. 배열을 할당하는데, 길이 10의 배열을 선언하고 11, 12번째 인덱스에 접근하게 되면 메모리 상의 그 다음, 다다음 공간에 접근하기 때문이다. 따라서 범위를 초과하는 인덱스에 접근하지 않도록 주의해야한다.

 

#include <iostream>
#include <algorithm>
 
using namespace std;
 
int main() {
    int n;
    cin >> n;
    int MyArray[1000000];
    for (int index=0; index < n; index++){
        cin >> MyArray[index];
    }
    sort(MyArray, MyArray+n);
    cout << MyArray[0] << " " << MyArray[n - 1];
    return 0;
}

자꾸 정상 동작해야 하는 코드가 주피터 환경에서는 compile error를 발생시키는데 그 원인을 알 수가 없어서 열......린다. 파이썬으로 처음 백준 풀 때 stdin stdout 헷갈려서 열받았던 거 생각난다,,^^

728x90
반응형