Algorithm Study/Java

[코드업 자바] # 1085 [기초-종합] 소리 파일 저장용량 계산하기

728x90
반응형

코드업 자바

# 1085 [기초-종합] 소리 파일 저장용량 계산하기

 

링크 : https://codeup.kr/problem.php?id=1085

 

[기초-종합] 소리 파일 저장용량 계산하기(설명)

소리가 컴퓨터에 저장될 때에는 디지털 데이터화 되어 저장된다. 마이크를 통해 1초에 적게는 수십 번, 많게는 수만 번 소리의 강약을 체크해 그 값을 정수값으로 바꾸고, 그 값을 저장해 소리를

codeup.kr

 

내 풀이_틀렸습니다

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int h = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();
        int s = sc.nextInt();

        double result = (h*b*c*s) / 8 / 1024 / 1024;
        System.out.printf("%.1f MB", result);
    }
}

 

  • 다른 분 풀이를 참고해서 같은 코드를 작성했는데, 위 코드의 결과는 1.0 MB로 나온다 (이유는 아직 모르겠다)
  • Math.pow()를 사용해서 1024를 수정해주었을 때 예제에 대한 답이 나왔다

 

틀렸습니다 문제 해결

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        long h = sc.nextLong();
        long b = sc.nextLong();
        long c = sc.nextLong();
        long s = sc.nextLong();

        double result = (h*b*c*s) / Math.pow(2, 3) / 1024 / 1024;
        System.out.printf("%.1f MB", result);
    }
}

 

  • h, b, c, s를 long으로 지정할 때 정답으로 채점되었다. 이유를 모르는게 아쉽다.. 추측으로는 아마 h*b*c*s의 값이 너무 커서 int 형태의 범위를 넘어갔기 때문이 아닐까 싶다