흰오목눈이야 개발하자

[JAVA] 두 수의 나눗셈 (난이도 Lv.0) 본문

알고리즘

[JAVA] 두 수의 나눗셈 (난이도 Lv.0)

흰오목눈이 2022. 10. 10. 14:53

문제 


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

https://school.programmers.co.kr/learn/courses/30/lessons/120806

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

접근법


1. num1을 num2로 나눈다.

2. 나눈 값에 1000을 곱한다.

3. 정수로 형변환(casting)하여 리턴한다.

 

실수한 부분


소숫점을 신경 쓰지 않고 정수로만 계산해서 기댓값이 나오지 않았다.

1. num1을 num2로 나눈다. → float 치환 필요!

소수점 형태인 float 형태로 먼저 바꿔주고 곱해줘서 나온 결괏값을 int로 리턴하니 해결되었다.

 

 

필요한 개념 💡


수학)

- 1. 정수, 실수의 개념

 

개발)

- 2. int, float, double의 개념

- 3. 정수에서 실수로 바꿔주는 형변환 개념

 

개념 설명


1. 정수, 실수의 개념

- 정수: 0을 포함하고, 자연수 및 음의 자연수를 포함하는 수 (TIP. 여기서는 소숫점으로 표현하지 않는 수라고 생각)

+) 자연수: 1부터 시작하여 1씩 커지는 수. 0이나 음수를 포함하지 않는다. (0은 자연수가 아니다)

- 실수: 유리수와 무리수를 포함하는 수 (TIP. 여기서는 소숫점으로 표현할 수 있는 수라고 생각하는게 편하다.)

 

2. int, float, double의 개념

개발에서 정수와 실수를 나타내는 방법

- 정수형 : int
- 실수형 : float, double

- float과 double의 차이는 표현할 수 있는 실수의 정밀성인데 double 더 많은 실수를 표현할 수 있다. 
하지만 문제에서는 제한사항이 100이하의 숫자이기 때문에 그렇게까지 큰 수는 필요가 없다고 생각하여 여기서는 float을 사용하기로 했다.
제한사항
0 < num1 ≤ 1000 < num2 ≤ 100

 

3. 정수에서 실수로 바꿔주는 형변환 개념

데이터의 타입을 변경하는 것형변환(type conversion, type casting)이라고 하는데 문제에서 정수의 값으로 파라미터가 주어졌고 계산할 때는 실수 형태로 바꿔주는 것이 필요하기 때문에 정수에서 실수로 형변환을 해줄 것이다.

 

Int to Double, Float (정수 → 실수)

: 정수형을 실수형으로 바꾸는 방법은 바꿔줄 숫자 앞에 원하는 데이터 타입을 괄호 안에 묶어주면 된다.

int integerNum = 10;

float floatNum = (float)integerNum;
double doubleNum = (double)integerNum;

 

문제 풀이 (해결) 🎉


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

간결하게 표현하고 싶었기에 따로 결과값을 출력하는 파라미터는 사용하지 않았다. 

먼저 주어진 수 num1, num2를 float 타입으로 바꿔주고 이를 나눈 후 1000을 곱해줬다. 

결괏값으로는 int 형태로 반환하는 것이 필요했기에 전체를 묶어 int 타입으로 형변환 후 리턴하였다.