728x90
반응형

문제


해결 방안
오답
class Solution {
public int solution(int num1, int num2) {
int answer = 0;
answer = (int) (double)num1/num2*1000;
return answer;
}
}
사실 Lv0에 쉬운 문제인데 이 글을 쓰게 된 이유는 연산 순서 때문이다.
한 줄로 answer 연산을 하고 싶어서 처음에는 위와 같이 코드를 작성했다.
분명 double 캐스팅을 했음에도 캐스팅 안한 것과 같은 결과가 나왔는데 연산 순서가 아래와 같이 진행되기 때문이다.
- num1이 double로 캐스팅
- num1이 int로 캐스팅
- int 연산 진행
한 줄로 answer 연산을 마치고 싶다면 아래와 같이 코드를 작성해야 한다.
정답
class Solution {
public int solution(int num1, int num2) {
int answer = 0;
answer = (int) ((double)num1/num2*1000);
return answer;
}
}
그럼 아래 순서로 연산이 진행된다.
- num1이 double로 캐스팅
- num2*1000연산은 double과 int 중 더 넓은 범위인 double로 연산 => 자동 형변환
- 연산 결과를 int로 캐스팅하며 자연스럽게 정수만 남음
자동 형변환과 괄호의 중요성 기억하기!!
728x90
반응형
'Computer Science (CS) > 알고리즘' 카테고리의 다른 글
| [프로그래머스] 분수의 덧셈 (0) | 2025.12.09 |
|---|---|
| [백준/Java] 10828번 스택 (0) | 2024.11.18 |
| [백준/Java] 10845번 큐 (0) | 2024.11.18 |
| [백준/Java] 9012번 괄호 (1) | 2024.11.17 |
| [백준/Java] 2164번 카드2 (0) | 2024.11.03 |