안녕하세요. 오늘은 백준 1546번 평균 문제에 대해서 포스팅 하려고합니다.
문제는 세준이가 시험을 망쳤다고 시험점수를 가지고 사기를 치는 것에서 시작하는데요.
본인이 N개의 과목을 시험쳤을 경우 N개 중 가장 높은 점수를 만점기준으로 바꿔버려 평균점수를 내는 문제입니다.
만약 N개의 과목 중 최고점이 60점일 경우 그 과목은 60/60*100=100점인 만점으로 바뀌어 사기를 치는 문제입니다.
아무래도 세준이의 미래는 청조형인 것 같습니다. I am 만점자에요.
저는 이문제를 풀 당시에 C++과목을 수강하고 있었어서 C++로 아래와 같이 풀어보았습니다.
#include <iostream>
using namespace std;
int main(){
int N;
int H = 0;
cin >> N;
int score[N]; //과목별 점수 배열 선언
float array[N]; //최대점H로 나누고 *100한 값을 배열 선언
float sum = 0.0; //위 값들의 합
for (int i = 0; i < N; i++){
cin >> score[i];
}
for (int i = 0; i < N; i++){ //최대점 구하기
if (score[i] >= H){
H = score[i];
}
}
// 배열 초기화 및 값 할당해야함 -> score[]은 int로 받았고, 받은 score을 float형변환값으로 배열
for (int i = 0; i < N; i++){
array[i] = static_cast<float>(score[i]);
}
// 0으로 나눴을 때 대비
if (H != 0) {
for (int i = 0; i < N; i++){
array[i] = array[i] / static_cast<float>(H) * 100; //H도 강제형변환
sum += array[i];
}
}
cout << sum / static_cast<float>(N);
return 0;
}
백준 1546번 풀이방식
1. 먼저 변수를 선언해줍니다. 과목의 개수인 N을 선언해줍니다.
2. N개의 과목 중 최고점수를 알기위해 변수 H를 선언해줍니다.
3. 과목의 개수를 입력받도록 해줍니다.
4. score[N]을 선언해주어 과목의 개수만큼 점수값이 배열에 저장되게 해줍니다.
5. array[N]을 선언해주어 최대값 H로 점수를 나눴을 때의 값이 배열에 저장되게 해줍니다.
*이 때 score[N]은 과목의 점수가 정수로 입력받기 때문에 int로
array[N]의 값은 H로 나눈 값들의 배열로 소수점자리가 나올 것이므로 float형으로 선언해주었습니다.
6. array[N] 배열의 값의 총합을 sum이라는 int형 변수로 선언해주었습니다.
7. N번만큼 반복하는 반복문을 두어 N개의 과목의 점수를 입력받게해주었습니다.
8. 최초 H, 최대점수는 0으로 초기화된 상태입니다. N개의 과목을 한번씩 반복해주며 H값과 비교해 더 큰 수를 H에 대입해주어 N개 과목 중 가장 큰 값을 H에 대입시키도록 반복문을 만들어주었습니다.
9. score[n]이 int형이므로 강제형변환 시켜주는 static_cast<float>로 float형으로 변환된 값을 array[i]에 대입시켜줍니다.
10. H가 0이면 나눌 수 없으므로, 0이 아닐 때를 조건문으로 걸어주고, N번만큼 반복하여 과목당 점수/최대값*100의 값을 score[i]값에 대입해줍니다. 대입된 array[i]값들을 N번만큼 반복하여 이전값과 더해 총합을 구합니다.
11. 총합 / 과목수로 평균을 구해주고 이를 출력합니다.
1학년 과목으로 처음 C++을 배웠어서 C++로 백준문제를 풀어보았습니다.
다른 언어를 배우면 또 다시 풀어봐야겠네요.
이것으로 백준 1546번 문제풀이 포스팅을 마치도록 하겠습니다. 감사합니다.
'공부 > 컴퓨터' 카테고리의 다른 글
스크래치란? 스크래치의 특징/장점/방법 (39) | 2024.09.05 |
---|---|
VR(가상현실)이란? 특징과 출력방법에 대해서 (10) | 2024.09.04 |
QR코드란? 바코드와 QR코드의 차이와 특징 (1) | 2024.09.03 |
십진수의 r진수(2진수, 8진수, 16진수)로 변경하는 알고리즘 (0) | 2024.08.30 |
백준 10872번 팩토리얼 C++ (0) | 2024.02.06 |