[백준] 2108번 통계학 C++ 코드

2024. 7. 27. 11:35· 백준

코드

#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <cmath>
using namespace std;

int n, a[500003],numcnt[8105], res, temp,many, sum,cnt;

vector<int> v;

int main() {
    cin >> n;
    
    for(int i = 0; i < n; i++) {
        cin >> a[i];
        // 절대값이 4000 이하인 수들이므로, 4000을 더해준 값의 개수를 구해준다
        numcnt[a[i] + 4000]++;
        sum += a[i];
    }

    sort(a, a + n);
    
    for(int i = 0; i < 8001; i++) {
        if(numcnt[i] >= temp) temp = numcnt[i]; // 최빈값 구하기
    }

    for(int i = 0; i < 8001; i++) {
        if(numcnt[i] == temp) v.push_back(i - 4000); // 4000을 더했으므로, 원상복귀
    }
	
    // 소수점 연산은 오차가 있을 수 있으므로, 10을 곱해서 정수 연산
    double avg = (double)(sum) / n;
    avg *= 10;
    if(avg >= 0) {
        if(((int)avg % 10) >= 5) avg += 10;
    } else {
        avg = -avg;
        if(((int)avg % 10) >= 5) avg += 10;
        avg = -avg;
    }
    avg /= 10;
    
    cout << (int)avg << '\n';
    cout << a[n / 2] << '\n';
    v.size() > 1 ? cout << v[1] << '\n' : cout << v[0] << '\n';
    cout << (a[n - 1] - a[0]) << '\n';
    return 0;
}

평균을 맞게 구한 거 같은데 계속 틀려서 의아해하다가, 지문을 잘못 읽어 a배열을 적게 할당한 게 걸림돌이었던 문제. 최대값과 중앙값을 구하기는 쉬웠다.

평균은 소수연산을 하면 오차가 나서 틀릴 것 같아 10을 곱해준 값에서 반올림 조건을 주고, 다시 10을 나누어주는 방식을 선택했다.

최빈값은, 주어지는 값의 절대값이 4000이하이므로 8000개의 배열을 만든 후, 4000을 더해줘서 그 개수를 세는 방식으로 진행했다.

'백준' 카테고리의 다른 글

[백준] 13301번 타일 장식물 C++ 코드  (0) 2024.07.27
[백준] 9625번 BABBA C++ 코드  (0) 2024.07.27
[백준] 1913번 달팽이 C++ 코드  (0) 2024.07.27
[백준] 6603번 로또 C++ 코드  (0) 2024.07.25
[백준] 9184번 신나는 함수 실행 C++ 코드  (0) 2024.07.15
'백준' 카테고리의 다른 글
  • [백준] 13301번 타일 장식물 C++ 코드
  • [백준] 9625번 BABBA C++ 코드
  • [백준] 1913번 달팽이 C++ 코드
  • [백준] 6603번 로또 C++ 코드
Melon Man
Melon Man
Hello World
Melon Man
제발 CPU는 집에서 만들어 씁시다
Melon Man
전체
오늘
어제
  • 분류 전체보기 (644)
    • 직접 만들어 보기 (2)
    • 가내공업 (2)
    • HTML (0)
    • CSS (4)
    • JAVASCRIPT (51)
    • TYPESCRIPT (14)
    • NODE.JS (19)
    • REACT (7)
    • NEXT.JS (1)
    • REACT NATIVE (5)
    • REDUX (2)
    • PYTHON (17)
    • 자료구조 및 알고리즘 (35)
    • 컴퓨터 구조 (9)
    • 운영체제 (7)
    • NETWORK (3)
    • CodeUp 기본 100제 - Python (98)
    • 잡지식 (1)
    • 백준 (347)
    • SWEA (0)
    • GIT (4)
    • C (2)
    • C++ (11)
    • JAVA (2)
    • 객체지향프로그래밍 (0)
    • 정보처리기사 (1)
    • 프로그래머스_SQL (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • input
  • Node
  • BFS
  • 자료구조
  • 표준내장객체
  • 초보
  • javascript
  • 기초
  • python
  • 파이썬
  • 입출력
  • CodeUp
  • 코드업
  • 다익스트라 알고리즘
  • event
  • 함수
  • C++
  • 위상정렬
  • 유니온 파인드
  • mdn
  • React
  • 백준
  • 운영체제
  • TypeScript
  • 자바스크립트
  • node.js
  • 알고리즘
  • standard built-in object
  • 정렬
  • 입문

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.3.0
Melon Man
[백준] 2108번 통계학 C++ 코드
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.