먹었으면 뇌를 쓰자

백준 1546 java - 평균 본문

JAVA/백준 알고리즘

백준 1546 java - 평균

뇌이비 2022. 11. 28. 18:27

문제

 

 

 

정답

4단계에서 거의 매번 틀리고 있어서 

오답 코드를 보면 너무 우울해진다.

 

우울할 일까지는 아니지만

맞히고 싶은 열망이 커서 그런 것 같다.

 

정답 로직만 정리해보자.

 

 

 

 

중요한 점은 세 가지이다.

 

 

1. StringTokenizer

->  for문 안에 넣은 코드가 틀렸었다. 내가 왜 StringTokenizer를 for문 안에 넣었을까 생각해봤다.

3단계 A+B-7 문제에서 for문 안에 넣었던 경험 때문에 그런 것 같다. (https://eat-then-brain.tistory.com/49)

 

->  A+B-7 문제는 입력 값 자체가 여러 번 들어왔기 때문에 토큰화도 여러 번 했어야 했다.

그런데 이번 문제는 입력 값은 한 번만 들어오니까 토큰화를 반복하지 않는다.

 

 

2. (arr [ i ] / max) * 100 

->  연산자 우선 순서에 따르면 *가 먼저 수행되므로, 괄호로 묶어준다.

 

 

3. double 

-> 맨 처음 입력되는 과목 수 n을 제외하고 다른 모든 변수가 double형이다. 

점수 조작 공식을 각각 int형과 double형으로 구현해보면 다음과 같이 상이한 결과가 나온다.

 

 

 

 

-> int형으로 하면 소수점이 나오는 경우 연산이 제대로 되지 않는다.

따라서 연산에서 큰 비중이 없는 과목 수 n을 제외한 배열 arr[], 최대 점수 max, 합 sum은 double형으로 한다.

 

 

 

Comments