지니의 개발로그
[프로그래머스 Java] 두 수의 나눗셈 본문
출처 : 프로그래머스 https://school.programmers.co.kr/learn/courses/30/lessons/120806?language=java
문제 설명
정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요.
제한사항
0 < num1 ≤ 100
0 < num2 ≤ 100
입출력 예

입출력 예 설명
입출력 예 #1
num1이 3, num2가 2이므로 3 / 2 = 1.5에 1,000을 곱하면 1500이 됩니다.
입출력 예 #2
num1이 7, num2가 3이므로 7 / 3 = 2.33333...에 1,000을 곱하면 2333.3333.... 이 되며, 정수 부분은 2333입니다.
입출력 예 #3
num1이 1, num2가 16이므로 1 / 16 = 0.0625에 1,000을 곱하면 62.5가 되며, 정수 부분은 62입니다.
🔴 문제
class Solution {
public int solution(int num1, int num2) {
double answer = num1/num2*1000;
return (int) answer;
}
}
num1이 3이고 num2가 2일 때, 기대하는 반환 값은 1500이지만 실제로는 1000이 반환
🟠 분석
입력받는 num1과 num2가 모두 정수형 int 타입.
answer 앞에는 강제형변환을 하였으나
연산 하려는 우측항에는 형변환을 해주지 않아
num1 / num2는 정수 나눗셈이 되어 소수점 이하를 버리고 정수 결과만을 반환했다.
3을 2로 나누면 1.5가 되어야 하지만,
정수 나눗셈이라 결과는 1이 된 것이다.
🟡 시도
우측항의 나눗셈에 피연산자num1,2를 실수형 double타입 으로 변환하여 실수 나눗셈을 수행
//수정한 코드
class Solution {
public int solution(int num1, int num2) {
double answer = (double)num1/(double)num2*1000;
return (int) answer;
}
}
🟢 배움
Java에서의 정수 나눗셈과 실수 나눗셈의 차이를 알 수 있었다.
정수 나눗셈은 소수점 이하를 버리는 계산을 하고
실수 나눗셈은 소수점 이하까지 계산한다.
따라서, 정확한 소수점 계산이 필요할 때는 피연산자의 자료형 타입을 고려하여
정수형(int)인 경우 피연산자를 실수형(double)으로 형변환 할 것.
'알고리즘' 카테고리의 다른 글
[프로그래머스 코딩테스트] int answer = 0;는 왜 사용 할까? (0) | 2024.05.08 |
---|