728x90
출처
https://www.acmicpc.net/problem/1302
내 풀이
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int N = 0;
string book = "";
vector<string> books;
int main()
{
cin >> N;
for (int i = 0; i < N; i++)
{
cin >> book;
books.push_back(book);
}
sort(books.begin(), books.end());
//체크
/*for (int i = 0; i < books.size(); i++)
{
cout << books[i] << endl;
}*/
int bestsell = 0;
int cnt_sell = 1;
string cnt_book = books[0];
string bestseller = books[0];
for (int i = 1; i < books.size(); i++)
{
if (cnt_book == books[i]) cnt_sell++;
else
{
//가장 처음 책을 일단 베스트셀러로 선정
if (bestsell == 0)
{
bestsell = cnt_sell;
}
else if (cnt_sell > bestsell)
{
bestsell = cnt_sell;
bestseller = books[i-1]; //책이 바뀌고 이전의 책이 베스트 셀러니까 books[i-1]
}
//책이 바뀌었으니 초기화
cnt_sell = 1;
cnt_book = books[i];
}
}
//맨 마지막 책이 베스트 셀러인 경우 마지막으로 비교해줌
if (cnt_sell > bestsell) cout << books[books.size() - 1];
else cout << bestseller;
}
해설
벡터안에 입력받은 책을 넣고 정렬 후 그대로 책의 갯수를 세서 가장 많이 팔린 책을 출력해주는 식으로 만들었다.
피드백
조금 더 효율적으로 코드를 짤 수 있을 것 같은데 아직 많이 부족한거 같다.
계속 문제 많이 풀어보기
'백준 코딩테스트 > 실버' 카테고리의 다른 글
2667) 단지번호붙이기 (C++) (0) | 2022.04.19 |
---|---|
9184) 신나는 함수 실행 (C++) (0) | 2022.04.18 |
1003) 피보나치 함수 (C++) (0) | 2022.04.17 |
2606) 바이러스 (C++) (0) | 2022.04.16 |
15904) UCPC는 무엇의 약자일까? (C++) (0) | 2022.04.16 |