본문 바로가기

Algorithm

[programmers] 두 수의 나눗셈

기본적인 자료형과 형변환에 대해 묻는 문제였는데 여러 방법으로 시도해봐도 풀리지 않아 검색을 해봤다.

 

내가 한 실수

1. 정수부분만 출력해야하는데 'answer'를 int 형으로 변환하지 않아서 전부 출력하고 있었다.

2. num1,num2를 계산하기 전에 둘 중 하나를 double 로 형변환을 해 소수부까지 나올 수 있게 했어야했는데, 계산 후 전체 식에 double로 형변환을 시도했다.

 

알게 된 점

- 변수가 아닌 자료형에 형변환을 할 것!!!

-int / int 는 정수형이기 때문에 계산값도 int(정수)이므로 원하는 소수점 이하의 결과를 얻을 수 없다는 것!

조금만 더 생각해보았더라면 이유를 알았을지도 모르는데 너무 당연하게 계산값이 정수로 나온다는 것을 인지하지 못하고 있었다. 기본 문법을 더 튼튼히 다져야겠다는 생각을 했다.

 

정 괄호를 사용하고 싶다면 ((double) num1 / (double) num2) * (double) 1000 처럼 각각의 변수를 타입 변환 해주거나, double answer = ((double) num1 / num2) * 1000처럼 괄호 안에 (double) 타입 변환을 사용한다. 데이터의 산술 연산 시에는 피연산자들의 타입이 모두 일치해야하며, 타입 변환을 하는 시점에 따라 리턴값이 달라진다.

1) 이항 연산자는 두 피연산자들의 값이 일치해야 연산이 가능하다.
2) num1과 num2는 int형이다. 따라서 입출력 예3의 값을 대입한 1/16의 경우, 나누기 연산 이후 값이 0이 된다. 값 0에는 어떤 수를 곱해도 0이기 때문에 result값 62가 출력되지 않는 것이다.

 

 

참고

 

[프로그래머스][Java] 두 수의 나눗셈(Lv.0)

프로그래머스 정수 부분 몫 구하기

velog.io

 

728x90