본문 바로가기
Language/Java

[Programmers | Java | 코딩테스트 입문 문제 풀이] 두 수의 나눗셈 - Solution with Arithmetic Operator

by ㅇ달빛천사ㅇ 2024. 6. 2.
728x90

KDT 실무형 스프링 백엔드 엔지니어 양성과정 6기 | Algorithm CODEKATA

두 수의 나눗셈

🏷 Topic : 연산자 산술 연산자 나눗셈 연산자


문제 설명

정수 num1num2가 매개변수로 주어질 때, num1num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요.


제한사항

  • 0 < num1 ≤ 100
  • 0 < num2 ≤ 100

입출력 예

num1 num2 result
3 2 1500
7 3 2333
1 16 62

입출력 예 설명

입출력 예 #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입니다.

✔ Solution with 나눗셈 연산자

class Solution {
    public int solution(int num1, int num2) {
        int answer = 0;
        float n = (float) num1 / num2;
        answer = (int) (n * 1000);
        return answer;
    }
}
채점 결과 채점 결과

💥 오늘 만난 문제 & 나의 시도 💦 & 해결 방법 👍

오늘 문제의 목표는
num1num2로 나눈 값에 1,000을 곱한 후 정수 부분을 반환 이다.


그런데 num1num2는 둘 다 정수형 변수이기 때문에

그냥 num1 / num2를 하면 소숫점 아랫 자리를 버려서 정답을 구할 수 없다.


1. num1을 실수형(float)으로 변환 후, num2를 나누자. 그리고 그것을 실수형 (float) 변수 n에 할당 하자.
(∵ num1num\는 둘 다 정수형(int) 변수

int형 / int형의 결과는 소숫점 아래 부분은 버리고 정수값을 반환)

  float n = (float) num1 / num2;

2. float n에 1000을 곱한 값을 int형으로 변환 후, answer에 할당하자.

  answer = (int) (n * 1000);

3. int answer을 반환하자.

  return answer;

💬 무엇을 새롭게 알았는지

  • 정수형 변수 / 정수형 변수는 몫에 소숫점 아래부분이 존재하더라도 소숫점 아래 부분은 버리고 정수값 반환

  • 정수 / 정수의 계산에서 소수점 아래 값을 나타내고 싶으면 두 변수 중 적어도 하나는 실수형이어야 한다.

    • (float) 정수 / 정수 : 소숫점 아래 값 존재 가능

📚 References(참고 자료)

[Java 봐] Operators(연산자)

[Java 봐] Type casting(형 변환)

728x90


Top