티스토리 뷰
문제
학생들의 시험 점수들을 받아 평균을 구하고 평균이 넘는 학생들의 비율을 계산하는 문제.
난이도
난이도 下, 소요시간 10분
풀이 과정
새벽에 잠이 안와서 쉬운 거 하나 풀고 기쁜 마음으로 잠들자는 생각에 적당히 쉬운 걸 찾다가
정답률 40%정도면 적절하다 싶어서 골랐다.
scores라는 vector<int>형 배열을 만들고 차례차례 값을 받아 push해준 뒤,
accumulate 함수로 0.0부터 시작해서 scores의 첫 번째 원소부터 마지막 원소까지 다 더하고 scores의 원소의 개수로 나눠준다.
예전 같았으면 C++을 쓰면서도 포인터적인(?) 사고를 못벗어나고
동적할당을 해서 값을 입력받고 평균도 직접 함수를 짜서 구했겠지만
이젠 그냥 STL로 해결하니 매우매우매우 편하다.
이제 scores에서 pop해가면서 평균보다 큰놈들의 개수를 세고 비율을 구해서 출력하면 끝~~~~
매우 쉬웠던 덕에 빨리 자게 됐다.
코드는 이렇게 짰다.
#include <iostream> #include <numeric> #include <vector> using namespace std; int main(void) { int c = 0, n = 0; cin >> c; for (int t = 0; t < c; t++) { int count = 0; cin >> n; vector<int> scores; for (int i = 0; i < n; i++) { int score = 0; cin >> score; scores.push_back(score); // 차례차례 입력받아 배열에 넣어줌 } double avg = accumulate(scores.begin(), scores.end(), 0.0) / scores.size(); // vector의 원소들을 더해주는 std::accumulate 함수 while (!scores.empty()) { int back = scores.back(); scores.pop_back(); if (back > avg) count++; // 정수를 한개씩 뽑으면서 평균보다 크다면 count 증가 } printf("%.3lf%%\n", (double)count / n * 100.0); // %로 바꿔서 출력 } return 0; }
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ] 9020 - 골드바흐의 추측 (0) | 2018.05.02 |
---|---|
[BOJ] 2581 - 소수, 1929 - 소수 구하기 (0) | 2018.04.30 |
[BOJ] 1316 - 그룹 단어 체커 (0) | 2018.04.16 |
[BOJ] 2292 - 벌집 (0) | 2018.04.15 |
[BOJ] 10250 - ACM 호텔 (0) | 2018.04.02 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 립 모션
- WindowsXP
- Leap motion
- VMware
- windows10
- 툴
- 가상머신
- Leap motion stick
- Leap motion pencil
- C++
- Tool Tracking
- # 보안 # 나만의 # 백신 # 만들기 #안티 #바이러스 #파이썬 #악성코드
- Leap motion SDK
- 윈도우xp
- 설치
- Leap motion pen
- VirtualBox
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함