82. 뭐라 요약해야할지 모르겠으니 원본링크의 문제를 확인바랍니다.
입력: h, b, c ,s 가 공백을 두고 입력됨
입력 범위: 자연수, 최대값 h, b, c ,s : 48000, 32, 5, 6000
출력: 소수점 2째 자리에서 반올림, 단위 MB 출력
입력 예시
44100 16 2 10
출력 예시
1.7 MB
JAVA
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int h = scan.nextInt();
int b = scan.nextInt();
int c = scan.nextInt();
int s = scan.nextInt();
scan.close();
long middle = 1;
//middle = h * b * c * s;
middle *= h;
middle *= b;
middle *= c;
middle *= s;
double result = middle/8;
result /= (1024 * 1024);
System.out.println(String.format("%.1f MB", result));
}
}
Swift 4.2
import Foundation
if let line = readLine(){
let valueArray = line.split(separator: " ")
if valueArray.count == 4,
let h = Int(valueArray.first!),
let b = Int(valueArray[1]),
let c = Int(valueArray[2]),
let s = Int(valueArray[3])
{
let middle = h * b * c * s
let result = Double(middle) / 8 / 1024 / 1024
print(String.init(format: "%.1f MB", result))
}
}
이번 문제는 엄청긴데 결국 네 수를 곱하고 8로 1024로 또 1024로 나누는 문젭니다.
중간 결과값이 Int 범위를 넘어서기에 이제 공부시작하시는 분들은 int로 그냥 처리하다가 값이 -값이 나오는일이 비일비재할문제일거같습니다.
물논~!
스위프트에서는 Int값 범위가 매우 넓기에 그냥! Int로 처리하시면됩니다.
사실 코드업에서 이러한 문제에 대해 물어보는걸 귀찮아하는건지 입력가능한 최고값을 입력시 잘못나오는거에대한 테스트케이스가 없는거같습니다.
자바코드쪽의 주석친 한부분이 int형으로 된 곱셈을 int형끼리 곱하고 long에 넣기때문에 문제 생겨야하는데 사이트에서는 문제없다고 평을 내리더군요;;
따로 안돌려봤으면 그냥 아마 주석친부분으로 포스트했을거같네요
https://codeup.kr/problem.php?id=1085
[기초-종합] 소리 파일 저장용량 계산하기(설명)
소리가 컴퓨터에 저장될 때에는 디지털 데이터화 되어 저장된다. 마이크를 통해 1초에 적게는 수십 번, 많게는 수만 번 소리의 강약을 체크해 그 값을 정수값으로 바꾸고, 그 값을 저장해 소리를
codeup.kr
반응형
'iOS > CodeUP - 기초100 With Swift' 카테고리의 다른 글
1087 : [기초-종합] 여기까지! 이제그만~ with Swift (0) | 2021.06.22 |
---|---|
1086 : [기초-정보] 그림 파일 저장용량 계산하기 with Swift (0) | 2021.06.22 |
1084 : [기초-종합] 물감만들기 해결 with Swift (0) | 2021.05.25 |
1083 : [기초-종합] 3 6 9 게임의 왕이 되자! with Swift (0) | 2021.05.25 |
1082 : [기초-종합] 16진수 구구단? with Swift (0) | 2021.05.25 |