[백준 BOJ] 20053번 최소, 최대 2 (C++/cpp)

2023. 1. 31. 14:42PS (Program Solving)/BOJ (백준)

문제 설명

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

 

20053번: 최소, 최대 2

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

www.acmicpc.net

백준 BOJ 20053번 최소, 최대 2 문제 사진

 

접근 방법 - 최대.최소 구하기의 기본 문제

백준의 20053번 문제는 최대/최소의 값을 구하는 데에 있어 기본적인 문제이다.

해당 문제는, 각 테스트 케이스에 있는 값들에 대하여 최댓값 및 최솟값을 구하여 출력해야 하는 문제이다.

흔한 알고리즘이지만, 필자는 최대 및 최소를 저장할 변수를 선언하고 해당 값을 변경하며 정답을 구하도록 하였다.

이 원리를 접해보았던 사람이라면, 이 문제는 비교적 쉽게 해결했을 것으로 예상된다.

혹여나 해당 문제를 해결하는 데에 어려움을 겪고 있다면, 아래의 설명과 코드를 참고해 보길 바란다.

필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.

 

코드의 실행 순서

1) 테스트 케이스의 수(n)를 입력받는다.

 

2) n의 크기만큼, 반복문을 실행하여 아래의 연산을 취한다.

- 입력받을 숫자의 개수(cnt)를 입력받는다.

- 최댓값 및 최솟값을 저장할 변수 max, min을 선언한다.

여기서 2개의 변수를 초기화할 때, 문제에 명시된 입력값의 범위를 참고하도록 한다.

- cnt의 크기만큼, 숫자(num)를 하나씩 입력받는다. 그와 동시에, 아래처럼 값 비교를 시도한다.

여기서 현재 max의 값보다 num의 값이 크다면, max를 현재 num의 값으로 갱신한다.

마찬가지로 현재 min의 값보다 num의 값이 작다면, min을 현재 num의 값으로 갱신한다.

- 입력과 비교 연산이 모두 끝났다면, 최종적으로 저장된 min과 max의 값을 순차적으로 출력한다.

 

3) 모든 테스트 케이스가 실행되었다면, 실행 종료한다.

반응형

 

성공한 코드

#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#define endl '\n'
using namespace std;

//백준 20053번 코드
int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);	cout.tie(NULL);

	int n;
	cin >> n;
	for (int i = 0; i < n; i++) {
		int cnt;
		cin >> cnt;

		int max = -1000000;
		int min = 1000000;
		for (int j = 0; j < cnt; j++) {
			int num;
			cin >> num;
			if (max < num) { max = num; }
			if (min > num) { min = num; }
		}

		cout << min << " " << max << endl;
	}
}

 

제출 결과

백준 BOJ 20053번 최소&#44; 최대 2 문제 C++ 제출 결과

(2022.11.18 백준 20053번 문제 제출 결과)

반응형