Algorithm : 연산법
수학과 컴퓨터과학에서 사용되는, 문제 해결 방법을 정의한 '일련의 단계적 절차'이자 어떠한 문제를 해결하기 위한 '동작들의 모임'이다. 계산을 실행하기 위한 단계적 규칙과 절차를 의미하기도 한다.
"알고리즘은 코딩의 효율성과 확장성을 결정짓는 핵심 요소"
주제 : 두 수의 나누기
레벨 : ★☆☆☆☆
문제
정수 num1과 num2가 주어질 때, num1을 num2로 나눈 값에 정수 1,000을 곱한 정수를 return 하도록 solution 함수를 완성해라.
//Base Code
class Solution {
public int solution(int num1, int num2) {
int answer = 0;
return answer;
}
}
처음에는 A 나누기 B에 1000을 곱한 값이니
(A/B)*1000이라 생각하고 아래와 같은 코드를 작성했다.
return (num1/num2)*1000;
정답이 틀리다고 나온다.
이유는, 정수 나눗셈의 특성 때문이다.
num1,2가 모두 정수(int)라면, 소수점이 없는 정수 나눗셈이 된다.
자바에서 정수끼리 나눗셈을 하면 소숫점 이하가 버려지는 몫만 반환된다.
예를 들어, 3/2는 1.5가 아니라 1이된다.
그 상태에서 1000을 곱하니 값이 달라진다.
원래 기대 값 1500이지만 1000이 표출된다.
올바른 값을 구하기위해서는
(3*1000) / 2를 하면
3000 / 2 = 1500으로 정상적인 값이 표출된다.
고로
return (num1 * 1000) / num2;
class Solution {
public int solution(int num1, int num2) {
int answer = (num1 * 1000) / num2;
return answer;
}
}