인프런 커뮤니티 질문&답변

성장몬님의 프로필 이미지
성장몬

작성한 질문수

Do it! 알고리즘 코딩테스트 with JAVA

[배열과 리스트 실전 문제] 평균 구하기 (백준 1546)

평균 구하기 (백준 1546) 질문

해결된 질문

작성

·

626

0

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

강의에서는 이렇게 출력하는데

 

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

이렇게 /max 와 *100.0 의 위치를 바꾸게 되면

출력값이 다르게 나와요!

 

문제에서 점수/M*100

그러니까 점수를 최댓값으로 나누고 100을 곱한다고 되어 있는데

 

순서에 따라 출력값이 다른 거면 다르게 풀어야되지 않을까요??

답변 3

1

하루코딩님의 프로필 이미지
하루코딩
지식공유자

말씀하신 부분은 sum과 max가 long형으로 선언이 되어있기 때문에 소수점 부분이 버림이 되기 때문입니다. 예를들어 sum = 32, max = 17이면 sum / max = 1 이라는 값이 나옵니다. 때문에 값이 다르게 나오게 됩니다. 만약 순서를 해당 방식으로 하고 싶다면 sum / (double)max 이런식으로 형변환을 하여 주시면됩니다. 감사합니다. :)

 

1

성장몬님의 프로필 이미지
성장몬
질문자

sum과 max 를 double형으로 선언하니까 출력값이 잘 나오네요!
(이유는 잘 모르겠지만..ㅠㅠ)

혹시 굳이 long형으로 선언하신 이유가 있을까요..?

하루코딩님의 프로필 이미지
하루코딩
지식공유자

해당 문제에서는 int, long 차이가 없습니다. ^-^ 다만 습관적으로 가능하면 long을 써주면 좋긴합니다. https://youtu.be/x-cYdsjfVKU 해당 영상을 한번 보시면 좋을 것 같습니다.

감사합니다. :)

0

변수명이 어떤 건지 알아 볼 수가 없어서 조금 헷갈립니다..

성장몬님의 프로필 이미지
성장몬

작성한 질문수

질문하기