Bon Voyage
Home
  • 분류 전체보기 (1)
    • 자료구조&알고리즘 (0)
    • 코딩 (0)
    • 자격증 공부 (0)
    • 취준 (0)
Home
  • 분류 전체보기 (1)
    • 자료구조&알고리즘 (0)
    • 코딩 (0)
    • 자격증 공부 (0)
    • 취준 (0)
블로그 내 검색

Bon Voyage

  • 코딩

    [BaekJoon/C++] 1302번 베스트셀러

    2023. 10. 21.

    by. 순늘봄

    11650번 백준 - 좌표 정렬하기

     

    문제 링크: https://www.acmicpc.net/problem/1302

     

    1302번: 베스트셀러

    첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고

    www.acmicpc.net

    문제: 

    김형택은 탑문고의 직원이다. 김형택은 계산대에서 계산을 하는 직원이다. 김형택은 그날 근무가 끝난 후에, 오늘 판매한 책의 제목을 보면서 가장 많이 팔린 책의 제목을 칠판에 써놓는 일도 같이 하고 있다.

    오늘 하루 동안 팔린 책의 제목이 입력으로 들어왔을 때, 가장 많이 팔린 책의 제목을 출력하는 프로그램을 작성하시오.

     

     

    접근 방법:

    key: 책 이름, value: 책 이름의 빈도수를 갖는 map 변수를 만들어준다. 이 문제를 풀면서 map 공부를 하게 되었는데 map 자료구조는 자료를 저장할 때 key 값을 기준으로 오름차순으로 정렬된다고 한다. 그렇기 때문에 이 문제에서는 빈도수가 가장 높은 값을 찾은 후 해당 빈도수를 갖는 key 값을 출력해주면 된다. 

     

    Map에 대한 추가 설명:

    1. Map이란?

    map은 key와 value 쌍으로 이루어져있다. 중요 특징으로는 중복을 허용하지 않는다는 점이 있다. 

     

    2. 기본 형태

    map <key type, value type> 이름;

    ex) map <string, int> m;

     

    3. map 정렬

    위에서 언급하였던 것처럼 map은 자료를 저장할 때 내부에서 key를 기준으로 오름차순으로 자동 정렬한다. 

    내림차순으로 정렬하고 싶은 경우에는 map  <int, int, greater> m; 과 같이 사용하면 된다. 

     

    구체적인 사용 방법은 따로 정리하여 포스팅할 예정!

     

    코드:

    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <map>
    
    using namespace std;
    
    // 책 이름을 key, 책 이름이 나온 빈도 수를 vlaue로 갖는 map 변수를 만듦
    // map 자료구조는 자료를 저장할  때 key 값ㅇㄹ 기준으로 오름차순으로 정렬되므로 가장 빈도수가 높은 값을 찾으면 바로 key 값을 출력하고 프로그램을 종료하면 됨
    map<string, int> m;
    int n, cnt;
    int main() {
    	cin >> n;
    	while (n--) {
    		string book;
    		cin >> book;
    		m[book]++;
    	}
    
    //range-based for statement
    // for (element_declaration : array) statement;
    	for (auto p : m)
    		cnt = max(cnt, p.second);
    	for (auto p : m) {
    		if (p.second == cnt) {
    			cout << p.first;
    			return 0;
    		}
    	}
    }

     

    '코딩' 카테고리의 다른 글

    [BaekJoon/C++] 13975번 파일 합치기 3  (0) 2023.10.27
    [BaekJoon/C++] 1181번 단어 정렬  (1) 2023.10.23
    [BaekJoon/C++] 11650번 좌표 정렬하기  (1) 2023.10.17
    [BaekJoon/C++] 2609번 최대공약수와 최소공배수  (3) 2023.10.17
    [BaekJoon/C++] 10814번 나이순 정렬  (0) 2023.10.14

    댓글

    관련글

    • [BaekJoon/C++] 13975번 파일 합치기 3 2023.10.27
    • [BaekJoon/C++] 1181번 단어 정렬 2023.10.23
    • [BaekJoon/C++] 11650번 좌표 정렬하기 2023.10.17
    • [BaekJoon/C++] 2609번 최대공약수와 최소공배수 2023.10.17
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Kakao Corp.

Designed by Nana
블로그 이미지
순늘봄

티스토리툴바