먹었으면 뇌를 쓰자

백준 4344 java - 평균은 넘겠지 본문

JAVA/백준 알고리즘

백준 4344 java - 평균은 넘겠지

뇌이비 2022. 12. 1. 21:43

문제

 

 

 

 

 

잘못된 코드

이번엔 진짜 열심히 풀어봤는데... 틀려서 너무 아쉽다.

 

 

 

 

 

 

정답 

 

점수 배열 score

뒤에 세번째 for문에 삽입될 if문에서 써야 하므로

병렬적인 두번째 for문이 아닌, 안고 있는 첫번째 for문에 위치시켰다.

 

if문은 세번째 for문 안으로

이전에는 if문이 두번째 for문 안에 있었다.

그러다보니 최종 avg가 나왔을때, 그 평균을 기준으로 count++ 인데 

avg가 최종까지 반복되는 작업 과정에서 count++을 할 수 없게 된다.

그래서 두번째 for문에서 최종 avg 를 다 구해놓고,

세번째 for문을 돌려서 배열 값과 최종 avg를 비교해 count++한다. 

 

 

 

 

참고 - per 변수 삭제

(count/num)*100 으로 비율을 구하는 건 출력에서 바로 하기로 했다.

 

참고 - avg 위치

지금처럼 두번째 for문에 avg를 위치시켜도 되긴 되는데

(결국 마지막 배열 값을 더한 sum/num이 최종 avg가 되기 때문)

두번째 for문 바깥에 빼도 결과는 똑같다.

 

 

 

 

 

 

 

 

잘못된 코드와 정답을 비교해보면

관건은 평균을 넘는 학생 수를 count++ 하는 if문을

배열 값을 받는 두번째 for문과 병렬시킨 세번째 for문에 넣어서 잘 구동하느냐였다.

(평균을 구하면서 평균을 넘는 학생 수를 구하는 게 아니라

평균을 구한 다음에, 평균을 넘는 학생 수를 구하는 것

-> 즉 for문을 두 번 돌려야 하고, 두 개의 for문에 사용될 점수 배열 score를,

두 개의 for문을 안고 있는 첫번째 for문에 위치시켜야 함)

 

 

 

 

 

 

 

 

+ 풀이 추가

 

BufferedWriter 사용.

 

 

 

Comments