본문 바로가기
개발/개발 공부

[프로그래머스] 코딩테스트 입문 : 두 수의 나눗셈

by 하모예 2024. 8. 25.

| 문제

정수 num1과 num2가 매개변수로 주어질 때,

num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return하도록,

solution 함수를 완성해주세요.

| 제한사항

0 ≤ num1 ≤ 100

0 ≤ num2 ≤ 100

| 입출력 예

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

| 풀이1

public int solution01(int num1, int num2) {
    double answer = 0; 
    answer = (double)num1/num2*1000;
    return (int)answer;
}

| 풀이2

public int solution02(int num1, int num2) {
    return num1 * 1000 / num2;
}

| 해설

형변환을 배울 수 있는 좋은 문제라고 생각해요.

프로그래밍을 처음 배우게 되면 변수의 개념에 익숙하지 않기 때문에

변수 선언과 할당을 끊어서 하더라고요.

그러면 이런 식으로 풀이를 하게 됩니다. 

public int solution01(int num1, int num2) {
    int answer = 0; 
    answer = num1/num2*1000;
    return answer;
}

 

그리고 3과 2를 나누고 1000을 곱한 결과가 1000이 나오는 것에 깜짝 놀라게 됩니다.

3과 2를 나누면 1.5이고, 1.5에 1000을 곱하면 1500인데 1000이 나오니깐요. 

자바는 자료형에 엄격한 정적 자료형 언어이기 때문에

동일한 자료형을 가진 두 데이터를 연산하면 해당 자료형으로 결과가 도출됩니다.

즉, 3과 2 모두 정수이기 때문에 두 수를 나눴을 때 1.5가 아니라 1로 인식하죠.

그리고 1에 1000을 곱하면 1000이 되게 됩니다.

자바는 정수끼리 연산하면 정수 즉, 몫만 도출한다는 사실을 잊지 맙시다!! 

댓글