[백준 BOJ] 22966번 가장 쉬운 문제를 찾는 문제 (C++/cpp)

2022. 10. 11. 15:27PS (Program Solving)/BOJ (백준)

문제 설명

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

 

22966번: 가장 쉬운 문제를 찾는 문제

예선 문제를 성실하게 복습한 학생들이라면 예선에 출제된 5문제가 난이도 순서대로 정렬되어 있다는 것을 알아차렸을 것이다. 하지만 본선은 문제 제목에 대해 사전순으로 정렬했기 때문에 난

www.acmicpc.net

백준 BOJ 22966번 가장 쉬운 문제를 찾는 문제 사진

 

접근 방법 - 최솟값 연산의 기본 문제

백준의 22966번 문제는 최솟값 연산을 이용하여 간단하게 해결할 수 있는 문제이다.

해당 문제는, 주어진 문제의 제목과 난이도에 대하여 가장 쉬운 문제의 제목을 출력해야 하는 문제이다.

이 문제는 최댓값 최솟값 연산만 잘 응용할 수 있다면 비교적 쉽게 해결할 수 있는 문제로 예상된다.

필자의 경우에는 2개의 배열을 사용하여 해결하였지만, 굳이 배열을 사용할 필요는 없음을 미리 알린다.

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

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

 

코드의 실행 순서

1) 문제의 수(n)를 입력받는다.

 

2) 문제의 제목들을 저장할 배열(st)과 각 문제의 난이도를 저장할 배열(num)을 각각 선언해둔다.

 

3) 정답을 저장할 문자열 변수(cnt)와 난이도 연산을 위한 변수 min을 각각 선언해둔다.

여기서, 난이도 입력값 중 최댓값이 4이기 때문에, 원활한 최솟값 연산을 위해 min의 초기값은 5로 설정해둔다.

 

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

- 문제의 제목(st)과 난이도(num)를 하나씩 입력받는다.

- 만일 현재 입력받은 난이도가 min의 난이도 값보다 더 작다면, min의 값을 현재 난이도 입력값으로 갱신한다.

또한 이 경우, 현재까지는 해당 문제가 가장 쉬운 것으로 나타나니 cnt에 현재 입력받은 문제의 제목을 저장하도록 한다.

 

5) 모든 입력과 연산이 끝났다면, 최종적으로 저장된 cnt의 값을 출력한 뒤 실행 종료한다.

반응형

 

성공한 코드

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

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

	int n;
	cin >> n;

	string st[4];
	int num[4];
	int min = 5;
	string cnt;
	for (int i = 0; i < n; i++) {
		cin >> st[i] >> num[i];
		if (min > num[i]) {
			min = num[i];	cnt = st[i];
		}
	}

	cout << cnt << endl;
}

 

제출 결과

백준 BOJ 22966번 가장 쉬운 문제를 찾는 문제 C++ 제출 결과

(2022.05.13 백준 22966번 문제 제출 결과)

반응형