본문 바로가기

프로그래머스 - 코딩테스트

[Java][프로그래머스] - (LVL.0) 두수의 나눗셈


오답

해당 문제를 접했을때 아무생각 없이 적은 나의 닶이다..

// OLD answer
class Solution {
    public int solution(int num1, int num2) { // num1 : 3, num2 : 2
        int answer = 0;
        double first = num1 / num2;
        answer = (int) first * 1000;
        return answer; // answer 은 1500 이 되야함.
    }
}

아무리 내가 대부분의 개발을 javascript로 했다고 하지만 내 Java 가 많이 처참해진 것 같다.

이것은 형변환과 자료형에 대한 기본 지식이 요구되는 문제이다.

 

상기 답변의 첫번째 문제는 double first = num1 / num2; 이부분이다.

 

num1 / num2 의 결과는 1 이 나온다. 이상태에서 float first 에 할당되었을때 1.000000 이 된다. 

이것은 우리가 의도한 결과가 아니다. 그래서 해당 연산을 (double) 로 형변환이 필요하다. 그리하여 1.500000 이 나오게 해야한다.

또한 1000 이라는 정수를 저렇게 따로 곱해줄 필요는 없어보인다. 코드만 길어진다.


정답

public int solution(int num1, int num2) {
    double result = (double) num1 / num2 * 1000;
    return (int) result;
}

의도한대로 결과가 도출된다.