반응형
DoZZang
Do IT
DoZZang
전체 방문자
오늘
어제
  • Programming
    • Git
    • Web
    • 기타
    • Python
      • CodeUp
    • Math
    • Algorithm
    • Baekjoon
    • C,C++
    • Life
      • 독서
      • Just
      • 영화

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
DoZZang

Do IT

[C] 백준 1546번 : 평균
Baekjoon

[C] 백준 1546번 : 평균

2022. 8. 16. 19:43
반응형

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

 

1546번: 평균

첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보

www.acmicpc.net

코드

#include <stdio.h>
#include <stdlib.h>
int main() {
  int N;
  float *score;
  int M = 0;
  float sum,ave = 0;
  scanf("%d",&N);
  score = (float*)malloc(sizeof(float) * N);
  for(int i = 0; i < N; i++) {
    scanf("%f",&score[i]);
    if(M < score[i]) {
      M = score[i];
    }
    }
  for(int i = 0; i < N; i++) {
    score[i] = score[i] / M * 100; 
    sum += score[i];
  }
  ave = sum / N;
  printf("%f",ave);
  
  
  
    return 0;
}

☞ 풀이 전

N값이 반드시 배열의 크기가 되어야 하기 때문에 동적할당이 필요하다고 생각했습니다. 배열을 float형으로 한 이유는 1.굳이 부동소수점을 표현할 필요가 없다고 생각하여 double을 쓰지 않았고 2.문제에서 제시한대로 나눗셈을 거쳐서 소수점을 살려야 하기 때문이다. sum과 ave도 score 변수로 구성된 식이기 때문에 같은 float형으로 선언해줬다.

 

☞ 왜?

동적할당과 실수형으로 변수들을 선언해줬다면 나머지는 문제의 조건을 따라 식을 구성하기만 하면 되는 문제였다.

그러나 문제에서 궁금증이 생겼다. "실제 정답과 출력값의 절대오차 또는 상대오차가 10^-2 이하이면 정답이다."라는 조건은 왜 있던 걸까?

 

☞ 다른 사람의 코드

 

#include <stdio.h>

int main() {
	int n, score, big = 0;
	double sum = 0;
	scanf_s("%d", &n);
	for (int i = 0; i < n; i++) {
		scanf_s("%d", &score);
		sum += score;
		if (big < score)
			big = score;
	}
	printf("%lf", (sum / big * 100) / n);
	return 0;
}

출처 : https://velog.io/@chunghanoo/C%EC%96%B8%EC%96%B4-%EB%B0%B1%EC%A4%80-1546%EB%B2%88-%ED%8F%89%EA%B7%A0

굳이 동적할당으로 배열을 선언하지 않아도 좋았다. 위의 궁금증에 대해서는 더 알아볼 생각이다.

반응형

'Baekjoon' 카테고리의 다른 글

[C] 백준 4344번 : 평균은 넘겠지  (0) 2023.01.04
[C] 백준 8958번 : OX퀴즈  (1) 2022.09.08
[C] 백준 3052번 : 나머지  (0) 2022.08.16
[C] 백준 2439번 : 별 찍기 - 2  (0) 2022.08.13
[C] 백준 15552번 : 빠른 A+B  (0) 2022.08.12
    'Baekjoon' 카테고리의 다른 글
    • [C] 백준 4344번 : 평균은 넘겠지
    • [C] 백준 8958번 : OX퀴즈
    • [C] 백준 3052번 : 나머지
    • [C] 백준 2439번 : 별 찍기 - 2
    DoZZang
    DoZZang
    과정은 힘들지만 성장은 즐겁습니다.

    티스토리툴바