알고리즘_JAVA_05

Kingyj·2025년 3월 23일
post-thumbnail

🐤 Before

Algorithm : 연산법

수학과 컴퓨터과학에서 사용되는, 문제 해결 방법을 정의한 '일련의 단계적 절차'이자 어떠한 문제를 해결하기 위한 '동작들의 모임'이다. 계산을 실행하기 위한 단계적 규칙과 절차를 의미하기도 한다.

[ 즉, 어떤 문제를 해결하기 위한 명확한 정차와 규칙의 집합이다. ]

"알고리즘은 코딩의 효율성과 확장성을 결정짓는 핵심 요소"


🐤 Info

주제 : 두 수의 나누기
레벨 : ★☆☆☆☆

문제
정수 num1과 num2가 주어질 때, num1을 num2로 나눈 값에 정수 1,000을 곱한 정수를 return 하도록 solution 함수를 완성해라.

//Base Code
class Solution {
    public int solution(int num1, int num2) {
        int answer = 0;
        return answer;
    }
}

🐤 Think

처음에는 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; 

🐤 Final Code

class Solution {
    public int solution(int num1, int num2) {
        int answer = (num1 * 1000) / num2;
        return answer;
    }
}

0개의 댓글