728x90
KDT 실무형 스프링 백엔드 엔지니어 양성과정 6기 | Algorithm CODEKATA
➗ 두 수의 나눗셈
🏷 Topic : 연산자 산술 연산자 나눗셈 연산자
문제 설명
정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 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;
}
}채점 결과
💥 오늘 만난 문제 & 나의 시도 💦 & 해결 방법 👍
오늘 문제의 목표는
num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 반환 이다.
그런데 num1과 num2는 둘 다 정수형 변수이기 때문에
그냥 num1 / num2를 하면 소숫점 아랫 자리를 버려서 정답을 구할 수 없다.
1. num1을 실수형(float)으로 변환 후, num2를 나누자. 그리고 그것을 실수형 (float) 변수 n에 할당 하자.
(∵ num1과 num\는 둘 다 정수형(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(참고 자료)
728x90