CodingTest: programmers 120806 두 수의 나눗셈

new-pow·2022년 11월 9일
0
post-custom-banner

최근 프로그래머스 lv0이 새로 업데이트 되고 나서, 야금야근 풀어보고 있는 중이다.
이 문제는 프로그래머스 lv0 중에서도 쉬운 문제라고 생각해서, 계획도 안세우고 자신있게 코드를 적어 실행했다. 돌아온건 차가운 에러 메시지 🥲...
자바 기초 문법이 부족한 탓이라고 생각이 들어서 이 문제는 정리해보기로 한다.

문제

  • 문제 설명
정수 num1과 num2가 매개변수로 주어질 때,
num1을 num2로 나눈 값에 1,000을 곱한 후
정수 부분을 return 하도록 soltuion 함수를 완성해주세요.
  • 제한 사항
0 < num1 ≤ 100
0 < num2 ≤ 100

🔍 접근 방향

1. 나눗셈 연산의 데이터 타입은 double로
문제를 보자마자 나눗셈 연산이 들어있으므로 num1double로 변환하여 풀기를 시도했다. 테스트 코드 실행하여 결과값을 얻었지만, 예상한 값과 도출된 값이 전혀 달랐다. int answer 변수에 저장하려면 다시 int로 형변환을 해야하는데, 그 변환 시점이 틀렸구나 싶어 다시 시도했다.

// 최초에 제출한 코드
class Solution {
    public int solution(int num1, int num2) {
        int answer = (int)((double)num1/num2) * 1000;
        return answer;
    }
}
  1. 변수 따로 저장하지 않고 한줄로 구현했다.
// 최종 제출한 답변
class Solution {
    public int solution(int num1, int num2) {
        int answer = (int)((double)num1/num2 * 1000);
        return answer;
    }
}

📝 추가 공부 사항

Java 형변환

Java에는 다음 두 종류의 데이터 타입이 있다.

  1. Primitive Type
    • 자바에서 지원하는 기본 타입
    • byte, short, int, long, float, double, boolean, char
    • 클래스가 아니고, 상속으로 재가공이 불가능하다.
  2. Reference Type
    • 클래스로 만들어지는 객체
    • String, Wrapper class들.. 직접 만든 클래스들...

그 중 Primitive Type에 대한 형 변환에 대해 추가로 공부해보고자 한다.

Primitive Type Casting

Java의 Primitive Type들은 각각 표현할 수 있는 데이터의 크기가 다르다.
따라서, 형변환 시 데이터가 손실되거나 손실되지 않을 수 있다.

종류크기
byte8bit
short16bit
int32bit
long64bit
float32bit
double64bit
char16bit

더 큰 타입 👉 더 작은 타입

  • (변환할타입)을 앞에 붙여 캐스팅을 해야한다.
int intNum = (int) floatNum;

더 작은 타입 👉 더 큰 타입

  • 데이터가 손실되지 않으므로 그냥 할당할 수 있다.
float floatNum = intNum;

👀 참고
자바의 정석

profile
저는 블로그 이사를 갔습니다
post-custom-banner

0개의 댓글