Notice
Recent Posts
Link
Recent Comments
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

지니의 개발로그

[프로그래머스 Java] 두 수의 나눗셈 본문

알고리즘

[프로그래머스 Java] 두 수의 나눗셈

지니♥︎ 2024. 5. 3. 11:16

출처 : 프로그래머스 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)으로 형변환 할 것.