※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 24085번 문제인 希少な数 (Rare Number)이다.
문제는 아래 링크를 확인하자.

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

 

24085번: 希少な数 (Rare Number)

A には 2 が 1 回,4 が 2 回,5 が 1 回,8 が 1 回出現する.2, 4, 5, 8 以外の整数は出現しない.このうち,出現回数が最小である整数は,2, 5, 8 である.したがって,2, 5, 8 のうち最

www.acmicpc.net

배열 arr의 i번째 성분에 "N개의 수중 i가 등장한 횟수"를 저장하자.

 

이제, arr을 작은 수부터 살펴보면서 기존에 등장한 수보다 더 적은 횟수 등장한 수로 답을 계속 갱신해나가자.

arr을 작은 수부터 살펴보므로, 동일 횟수 등장한 수라면 더 적은 수를 자동으로 답으로 보관하게 된다.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

int N;
int arr[2001];

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	
	cin >> N;
	while (N--) {
		int x; cin >> x;
		arr[x]++;
	}

	int mx = 1000000007, ans = -1;
	for (int i = 1; i < 2001; i++) {
		if (0 < arr[i] && arr[i] < mx) {
			mx = arr[i], ans = i;
		}
	}

	cout << ans;
}
728x90

+ Recent posts