[C++] 4358번: 생태학

2023. 7. 6. 01:57·[게임 개발] 알고리즘 공부/백준

링크

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

 

4358번: 생태학

프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어

www.acmicpc.net

문제

생태학에서 나무의 분포도를 측정하는 것은 중요하다. 그러므로 당신은 미국 전역의 나무들이 주어졌을 때, 각 종이 전체에서 몇 %를 차지하는지 구하는 프로그램을 만들어야 한다.

입출력 예제

출력

주어진 각 종의 이름을 사전순으로 출력하고, 그 종이 차지하는 비율을 백분율로 소수점 4째자리까지 반올림해 함께 출력한다.

예제 입력 1 복사
Red Alder
Ash
Aspen
Basswood
Ash
Beech
Yellow Birch
Ash
Cherry
Cottonwood
Ash
Cypress
Red Elm
Gum
Hackberry
White Oak
Hickory
Pecan
Hard Maple
White Oak
Soft Maple
Red Oak
Red Oak
White Oak
Poplan
Sassafras
Sycamore
Black Walnut
Willow
예제 출력 1 복사
Ash 13.7931
Aspen 3.4483
Basswood 3.4483
Beech 3.4483
Black Walnut 3.4483
Cherry 3.4483
Cottonwood 3.4483
Cypress 3.4483
Gum 3.4483
Hackberry 3.4483
Hard Maple 3.4483
Hickory 3.4483
Pecan 3.4483
Poplan 3.4483
Red Alder 3.4483
Red Elm 3.4483
Red Oak 6.8966
Sassafras 3.4483
Soft Maple 3.4483
Sycamore 3.4483
White Oak 10.3448
Willow 3.4483
Yellow Birch 3.4483

코드

#include <iostream>
#include <map>
#include <string>
#include <vector>
using namespace std;

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

    map<string, double> trees;
    double count = 0;
    string temp;

    while (getline(cin, temp))
    {
        if (trees.find(temp) == trees.end())
        {
            trees[temp] = 1;
            count++;
        }
        else
        {
            trees[temp]++;
            count++;
        }
    }
    cout << fixed;  // 소수점 이하 자리수 고정
    cout.precision(4);  // 소수점 이하 4자리까지 출력

    for (auto tree : trees)
    {
        double per = (tree.second / count) * 100;
        cout << tree.first << " " << per << "\n";
    }

    return 0;
}

풀이

  • map을 이용해서 풀었다.
  • 공백을 포함해서 입력 받기 위해 getline을 사용하였다.
    콘솔창에서는 컨트롤+z키로 입력을 중지하고, 백준에서는 예제 입력이 파일입력으로
    주어지기 때문에 입력이 끝나면 자동으로 반복문이 종료된다.
  • cout << fixed와 cout.precision 으로 소수점 이하 4자리수 까지 출력한다.
    cout << fixed는 소숫점을 고정시켜 표현하겠다는 것 이고
    cout.precision(n)는 n자리수 까지 표현하겠다는 것 이다.
저작자표시 (새창열림)

'[게임 개발] 알고리즘 공부 > 백준' 카테고리의 다른 글

[C++] 3213번: 피자  (0) 2023.07.08
[C++] 1343번: 폴리오미노  (0) 2023.07.08
[C++] 27396번: 문자열 변환과 쿼리  (0) 2023.07.05
[C++] 22252번: 정보 상인 호석  (0) 2023.07.04
[C++] 22233번: 가희와 키워드  (0) 2023.07.04
'[게임 개발] 알고리즘 공부/백준' 카테고리의 다른 글
  • [C++] 3213번: 피자
  • [C++] 1343번: 폴리오미노
  • [C++] 27396번: 문자열 변환과 쿼리
  • [C++] 22252번: 정보 상인 호석
람팜팜~
람팜팜~
:)
  • 람팜팜~
    RumPumPum
    람팜팜~
  • 전체
    오늘
    어제
    • 전체 (123)
      • 🎵 일상 (2)
      • JAVA (5)
        • 김영한의 자바 입문 (3)
      • JavaScript (12)
      • ---------------------------.. (0)
      • [게임 개발] 포트폴리오 (2)
        • RPG (1)
        • 슈터-플랫포머 (1)
      • [게임 개발] 개발 일지 (28)
        • RPG (25)
        • TopDownProject (3)
      • [게임 개발] 언리얼엔진 공부 (9)
        • 이득우의 언리얼 프로그래밍 Part.1 (6)
        • 이득우의 언리얼 프로그래밍 Part.2 (1)
        • 개인 메모 (2)
      • [게임 개발] 알고리즘 공부 (60)
        • 프로그래머스 (8)
        • 백준 (52)
        • 개인 메모 (0)
      • [게임 개발] CPP 공부 (2)
        • 이것이 C++ 이다 (1)
        • Effective C++ (0)
        • Effective Modern C++ (0)
        • 홍정모 그래픽스 새싹코스 (1)
      • [게임 개발] CS 공부 (3)
  • 블로그 메뉴

    • 링크

      • Github
    • 공지사항

    • 인기 글

    • 태그

      해시
      참조자
      누적합
      데드락
      역참조
      투포인터
      dfs
      스레드
      그리디
      슬라이딩 윈도우
      브루트포스
      문자열
      context switching
      dp
      우선순위 큐
      프로세스
      메모리구조
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    람팜팜~
    [C++] 4358번: 생태학
    상단으로

    티스토리툴바