less than 1 minute read

사용언어

Visual studio 2019 C++

문제 간단요약

많이팔린 책이름 출력하기! 2권다 똑같이 많이팔렸으면 사전순으로 출력하기 !!

ex) aa bb -> aa가 출력

생각하기

bestseller의 struct를 생성해서 풀어보자!!!!

[1302 풀이]

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int N;
struct bestsell {
	int cnt; // 책의 개수
	string book; // 책이름
};
vector<bestsell> v;
bool compare(bestsell a, bestsell b) {
	if (a.cnt == b.cnt) // 책의 개수가 같으면
		return a.book < b.book; // 사전순으로!
	else
		return a.cnt > b.cnt;
}

int main() {
	cin >> N;
	for (int i = 0; i < N; i++) {
		int n = 0;
		int t = 0;
		string s; cin >> s;
		for (int i = 0; i < v.size(); i++) {
			if (v[i].book == s) {
				n++;
				t = i;
				break;
			}
		}
		if (n) {  // 이미 vector에 있다면
			v[t].cnt += 1; // 책의 개수만 추가
		}
		else { // 없다면
			bestsell bb;
			bb.book = s;
			bb.cnt = 1;
			v.push_back(bb);
		}
	}
	sort(v.begin(), v.end(), compare); // 개수와 사전순으로 정렬
	
	cout << v[0].book << "\n";
}

Categories:

Updated:

Comments