반응형
[1] 백준 카테고리
단계별로 풀어보기
1차원 배열
5단계 1546번 문제
평균
링크
https://www.acmicpc.net/problem/1546
[2] 문제
세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다.
예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다.
세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오.
1. 입력
첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다.
2. 출력
첫째 줄에 새로운 평균을 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10-2 이하이면 정답이다.
3. 예제 입력 1
3
40 80 60
4. 예제 출력 1
75.0
5. 예제 입력 2
3
10 20 30
6. 예제 출력 2
66.666667
7. 예제 입력 3
4
1 100 100 100
8. 예제 출력 3
75.25
9. 예제 입력 4
5
1 2 4 8 16
10. 예제 출력 4
38.75
11. 예제 입력 5
2
3 10
12. 예제 출력 5
65.0
[3] 정답
1. 정답 해설 포함
import java.util.Scanner;
// Scanner 사용을 위해서 java.util.Scanner 클래스를 import 한다.
public class Main {
// Main class를 접근제어자 public으로 선언한다.
public static void main(String[] args) {
// main 메소드를 접근제어자 public, 메모리에 상주하게, 반환값이 없이 선언한다.
Scanner sc = new Scanner(System.in);
// Scanner 객체 sc를 선언한다.
int a = sc.nextInt();
// 값을 입력받아 int형 변수 a에 저장한다.
double sum=0;
// double형 변수 sum를 선언하고 0으로 초기화한다.
double[] arr = new double[a];
// double형 배열 arr를 변수 a값 만큼의 길이로 선언한다.
double[] arr2 = new double[a];
// double형 배열 arr2를 변수 a값 만큼의 길이로 선언한다.
double effort=0;
// double 형 변수 effort를 선언하고 값을 0으로 초기화한다.
for(int i=0; i<arr.length; i++)
// for문을 선언한다. 총 arr 배열의 길이만큼 실행된다.
{
arr[i] = sc.nextInt();
// 값을 입력받아 배열 arr[i]에 저장한다.
}
double max=arr[0];
// 변수 arr[0]값을 double형 변수 max에 저장한다.
for(int i=0; i<a; i++)
// for을 선언한다. 변수 a에 저장된 값만큼 실행되게된다.
{
if(arr[i]>max) {
// arr[i]>max 조건에서 안에 있는 코드가 실행된다.
max = arr[i];
// 변수 arr[i]에 저장된 값을 변수 max에 저장한다.
}
}
for(int i=0; i<arr2.length; i++)
// for문을 선언한다. arr2 배열의 길이만큼 실행되게 된다.
{
arr2[i] = (arr[i]/max)*100;
// (arr[i]/max)*100의 값을 arr2[i]에 저장한다.
}
for(int i=0; i<arr2.length; i++)
// for문을 선언한다.
{
sum += arr2[i];
// sum+arr2[i]값을 변수 sum에 저장한다.
}
effort=sum/a;
// sum/a를 연산한 값을 변수 effort에 저장한다.
System.out.print(effort);
// 변수 effort에 저장된 값을 출력한다.
}
}
2. 정답 해설 미포함
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
double sum=0;
double[] arr = new double[a];
double[] arr2 = new double[a];
double effort=0;
for(int i=0; i<arr.length; i++)
{
arr[i] = sc.nextInt();
}
double max=arr[0];
for(int i=0; i<a; i++)
{
if(arr[i]>max) {
max = arr[i];
}
}
for(int i=0; i<arr2.length; i++)
{
arr2[i] = (arr[i]/max)*100;
}
for(int i=0; i<arr2.length; i++)
{
sum += arr2[i];
}
effort=sum/a;
System.out.print(effort);
}
}
반응형
'프로그래밍 > 백준 문제 풀이(자바)' 카테고리의 다른 글
백준 4344번 문제 자바 답/해설(평균은 넘겠지 문제) (0) | 2021.11.28 |
---|---|
백준 8958번 문제 자바 답/해설(OX 문제) (0) | 2021.11.27 |
백준 자바 나머지 답/해설(3052번 문제) (0) | 2021.11.03 |
백준 자바 숫자의 개수 답/해설(2577번 문제) (0) | 2021.10.23 |
백준 자바 최댓값 답/해설(2562번 문제) (0) | 2021.10.22 |