오답
해당 문제를 접했을때 아무생각 없이 적은 나의 닶이다..
// 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;
}
의도한대로 결과가 도출된다.
'프로그래머스 - 코딩테스트' 카테고리의 다른 글
[Java][프로그래머스] - LVL. 0 문자열 뒤집기 (1) | 2023.01.22 |
---|---|
[Java][프로그래머스] - LVL. 0 배열원소의 길이 (0) | 2023.01.22 |
[Java][프로그래머스] - LVL.0 피자나눠먹기 (0) | 2023.01.22 |
[Java][프로그래머스] - LVL.0 아이스 아메리카노 (0) | 2023.01.22 |
[Java][프로그래머스] - LVL.0 배열의 평균값 (0) | 2023.01.21 |