본문 바로가기

DEVELOP/Algorithm

[C] SW Expert Academy 문제풀이 :: 2071번

반응형

삼성이 운영하는 SW Expert Academy에서 문제풀이 시작. 백준은 파이썬으로, SWEA는 C로 풀기로 했다. C를 분명 수업 시간에 배우고 예제를 풀 때는 큰 어려움이 없었다. 근데 막상 혼자 문제를 풀려니까 레벨 1에서도 사소한 오류가 생겼다. 자잘한 문법이 잘 기억이 안 났는데 문제를 풀면서 조금씩 생각이 나고 익숙해졌다.


처음 푼 문제는 정말 간단한 문제다. 평균값 구하기. 파이썬이었으면 코드 몇 줄이면 된다. C로 푸니깐 조금은 코드가 더 필요하더라. 문제 링크는 아래와 같다. 



문제


https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5QRnJqA5cDFAUq&categoryId=AV5QRnJqA5cDFAUq&categoryType=CODE


 10개의 수를 입력 받아, 평균값을 출력하는 프로그램을 작성하라.


(소수점 첫째 자리에서 반올림한 정수를 출력한다.)



풀이


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
 
int main() {
    int tc, i, k, sum, avg, num;
    scanf("%d"&tc);
 
    for (i = 0; i < tc; i++) {
        sum = 0;
        for (k = 0; k < 10; k++) {
            scanf("%d"&num);
            sum += num;
        }
        avg = sum / 10;
        if (sum % 10 >= 5) {
            avg++;
        }
        printf("#%d %d\n", i + 1, avg);
    }
 
    return 0;
}
cs


어려운 문제는 결코 아니다. 처음에 scanf를 이용해서 테스트 케이스의 값을 입력받는다.


다만 처음에 scanf 함수에 변수가 아닌 주소를 넣어야 한다는 걸 잊어버려서 에러가 났다. 


이후에는 테스트 케이스 값만큼 for문으로 루프를 돌린다.


각 TC가 독립성을 갖기 위해 for문 안에서 sum 변수를 초기화 해준다.


문제에 10개의 값을 입력받으라고 되어있기 때문에 10번 for문을 돌리며 sum 변수에 각 숫자를 더해준다.


avg 변수에 sum을 10으로 나눈 값을 더한다. avg는 int로 선언되었기 때문에 정수로 표현된다. 소숫점 첫째 자리에서 올려주기 위해 10의 나머지가 5보다 크면 1을 더해줬다.


그리고 sum을 10으로 나눈 나머지가 5보다 클 경우 avg에 1을 더해준다.


avg를 출력한다.

반응형