병훈's Blog

SWEA - 2071. 평균값 구하기 (Python, Java, C++) 본문

Algorithm

SWEA - 2071. 평균값 구하기 (Python, Java, C++)

thdqudgns 2022. 12. 30. 02:36

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5QRnJqA5cDFAUq 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

[입력]

가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.

각 테스트 케이스의 첫 번째 줄에는 10개의 수가 주어진다.


[출력]

출력의 각 줄은 '#t'로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다.

 


 

<Python>

for t in range(1, int(input())+1):
    a = list(map(int, input().split()))
    print(f'#{t} {round(sum(a)/10)}')

 

평균을 구하는 문젠데, 반올림을 해야했다.

 

  • 그냥 // 로 나누어 정수를 구하면, 반올림이 아니라 버림이 되기에 실수에서 round()를 사용해야 한다.
  • 실수에서 round()를 해야 반올림이 되는 것이기에 //가 아니라 /를 사용하여 결과가 실수가 되도록 했다.

 

 

<JAVA>

import java.util.*;
  
class Solution
{
    public static void main(String args[]) throws Exception
    {
          
        Scanner sc = new Scanner(System.in);
        int T;
        T=sc.nextInt();
  
        for(int test_case = 1; test_case <= T; test_case++)
        {
            int result = 0;
            for (int i = 10; i > 0; i--) result += sc.nextInt();
              
            //Math.round를 사용하여 반올림 할 때, 나누는 수가 10이면 반올림이 안되고, 10.0으로 실수형으로 나눠야 반올림이 먹힌다.
            //왜냐하면 result/10은 바로 정수로 나와서, 28.6이 아니라 28로 나오기 때문이다.
            System.out.printf("#%d %d\n", test_case, Math.round(result/10.0));
  
        }
    }
}

 

  • 평균을 구하는 것이기에 배열을 사용하지 않고, 입력받은 정수들을 차례대로 result에 더해주었다.
  • Python과 마찬가지로 실수에서 반올림을 해줘야 하기에 10.0으로 나누어 실수가 나오도록 했고,
  • 실수에서 round를 사용하여 반올림을 하기 위해 round()가 있는 Math 클래스의 round를 사용하였다.
  • Math 클래스는 System 클래스와 마찬가지로, import하지 않아도 기본으로 사용할 수 있는 내장클래스다.
  • 출력형식은 printf()를 사용하여 문자와 변수를 동시에 출력할 수 있도록 하였다.

 

 

<C++>

#include<iostream>
#include<cmath>
using namespace std;
  
int main(int argc, char** argv)
{
    int test_case;
    int T;
      
    cin>>T;
      
    for(test_case = 1; test_case <= T; ++test_case)
    {
        int sum = 0;
  
        for(int i = 0; i < 10; i++) {
            int tmp;
            cin >> tmp;
            sum += tmp;
        }
          
        // 반올림을 하려면 <cmath> 헤더파일을 추가해야 한다.
        cout << '#' << test_case << ' ' << round(sum/10.0) << '\n';
    }
    return 0;//정상종료시 반드시 0을 리턴해야합니다.
}

 

JAVA의 방식과 유사하고, C++에서는 반올림을 위한 round()를 사용하기 위해 <cmath> 헤더를 추가해야 한다.

출력의 마지막에는 줄바꿈을 위해 '\n'을 넣었다.

 

 

 

 

728x90
728x90