작성한 질문수
Do it! 알고리즘 코딩테스트 with JAVA
[배열과 리스트 실전 문제] 평균 구하기 (백준 1546)
해결된 질문
작성
·
619
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 이런식으로 형변환을 하여 주시면됩니다. 감사합니다. :)
sum과 max 를 double형으로 선언하니까 출력값이 잘 나오네요!(이유는 잘 모르겠지만..ㅠㅠ)
혹시 굳이 long형으로 선언하신 이유가 있을까요..?
해당 문제에서는 int, long 차이가 없습니다. ^-^ 다만 습관적으로 가능하면 long을 써주면 좋긴합니다. https://youtu.be/x-cYdsjfVKU 해당 영상을 한번 보시면 좋을 것 같습니다.
감사합니다. :)
변수명이 어떤 건지 알아 볼 수가 없어서 조금 헷갈립니다..
해당 문제에서는 int, long 차이가 없습니다. ^-^ 다만 습관적으로 가능하면 long을 써주면 좋긴합니다. https://youtu.be/x-cYdsjfVKU 해당 영상을 한번 보시면 좋을 것 같습니다.
감사합니다. :)