#1546
[문제]
[코드]
#include <stdio.h>
int main() {
int N;
float average, max = 0, sum = 0;
scanf("%d", &N);
int score[N];
for (int i = 0; i < N; i++) {
scanf("%d", &score[i]);
if (score[i] > max) max = score[i];
}
for (int i = 0; i < N; i++) {
sum += score[i] / max * 100;
}
average = sum / N;
printf("%f\n", average);
return 0;
}
[설명]
시험 본 과목의 개수 N, 입력받을 점수를 저장할 배열 score을 정수로 선언해준다.
평균 average, 최대값 max, 합 sum은 float형으로 선언해주었고 필요한 변수는 0으로 초기화했다.
N을 입력받으면 입력받은 N만큼 또 수를 입력 받아 score라는 배열에 하나씩 저장하도록 한다.
배열에 수를 저장하는 동시에 max값과 비교를 하며 배열에 저장된 값들 중 가장 큰 값이 max에 저장되도록 한다.
세준이가 점수를 계산한다는 방식에 따라 점수를 계산해서 sum에 하나씩 값을 더해준다.
이렇게 구한 sum을 과목 수 N으로 나눠 평균 average를 구한다.
마지막으로 구한 평균을 출력해준다.
전체적으로 코드를 구성하는 건 어렵지 않았는데 마지막에 average, sum, max 등등 연산을 할 때 어느쪽까지 정수형이어야 하고 실수형이어야 하는지 헷갈려서 조금 헤맸었다. 아무생각 없이 하다보니 헤맸던 거 같은데 지금 와서 생각해보면 여기서 왜 헤맸나 싶다... 실수가 정수보다 더 크게 커버하므로 연산에 실수가 적어도 하나 들어가면 값도 실수가 나온다는 점 기억하자.
#2438
[문제]
[코드]
#include <stdio.h>
int main() {
int N;
scanf("%d", &N);
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= i; j++) printf("*");
printf("\n");
}
return 0;
}
[설명]
이 문제는 단순하게 별을 n번째 줄에 n개 출력하는 문제이다.
줄 수 N을 정수로 선언한 뒤 scanf로 수를 입력받도록 해준다.
반복문을 중첩하여 원하는대로 별을 찍어준 뒤 한 줄이 끝날 때마다 줄바꿈을 넣어준다.
#2439
[문제]
[코드]
#include <stdio.h>
int main() {
int N;
scanf("%d", &N);
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N - i; j++) printf(" ");
for (int j = 1; j <= i; j++) printf("*");
printf("\n");
}
return 0;
}
[설명]
이 문제는 앞선 문제와 달리 별을 n번째 줄에 n개 출력하는데, 뒤에서부터 별을 찍도록 하고 있다.
줄 수 N을 정수로 선언한 뒤 scanf로 수를 입력받도록 해준다.
반복문을 중첩하여 원하는대로 별을 찍어주는데, 입력받은 수가 N이면 n번째 줄에서 N-n 만큼 공백을 출력하고 n만큼 별을 찍도록 한다.
이렇게 한 줄이 완성되면 줄이 끝날 때마다 줄바꿈을 넣어준다.
'C > Baekjoon' 카테고리의 다른 글
[BOJ] SISS 겨울방학 스터디 - 4주차 (0) | 2022.01.22 |
---|---|
[BOJ] SISS 겨울방학 스터디 - 3주차 (0) | 2022.01.14 |
[BOJ] 1주차 - #1157 (0) | 2022.01.02 |
[BOJ] 1주차 - #1330 (0) | 2022.01.02 |
[BOJ] 1주차 - #1152 (0) | 2022.01.02 |
댓글