002 평균구하기

2023. 9. 3. 14:39코딩테스트

(문제) 세준이는 기말고사를 망쳤다. 그래서 점수를 조작해 집에 가져가기로 결심했다. 일단 세준이는 자기 점수 중 최댓값을 골랐다. 그런 다음 최댓값을 M이라 할 때 모든 점수를 점수/M * 100으로 고쳤다. 예를 들어 세준이의 최고점이 70점, 수학점수가 50점이라면 수학점수는 50/70*100 이므로 71.43점이다. 세준이의 성적을 이 방법으로 계산했을 때 새로운 평균을 구하는 프로그램을 작성하시오.

 

내 코드

[입력]

3

40 80 60 

[출력]

75

가 되게 해야한다.

입력을 한 줄로 받기 배열 변수를 정해서 입력을 받았다. 배열 요소 중에서 최댓값을 구하고 합을 구한 다음 

(합 * 100) / 최댓값 / 총과목을 구한다.

 

※ [시행착오] ※

변환된 점수를 구할 때 (기존점수/최댓값)*100을 하면 0이 출력된다

왜냐하면 점수를 정수타입 배열에 저장해서 40/80 -> 몫이 0이 되기 때문에 변환된 점수가 전부 0이 되어 틀린 결과가 나온다.

실행결과

 

좋은 코드

if(A[i] > max) {
    max = A[i];
}

-> A 배열의 각 요소를 max 와 비교하여 A배열의 요소값이 크면 max에 대입한다.

 

System.out.println(sum * 100.0 / max / N);

-> 각 요소 값마다 100 곱하고 최대값을 나누는 과정을 반복하지 말고

요소 값 모두 더한 값에 100곱하고 최대값을 나눈다.

 

'코딩테스트' 카테고리의 다른 글

StringTokenizer 이용하여 데이터 입력받기  (0) 2023.10.25
003 구간 합 구하기  (0) 2023.09.09
001 숫자의 합 구하기  (0) 2023.09.03
백준_체스 피스 계산  (0) 2023.08.11