Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

ASAP 개발

[C# 프로그래머스] 코딩 테스트 입문 > 두 수의 나눗셈 본문

알고리즘/프로그래머스(C#)

[C# 프로그래머스] 코딩 테스트 입문 > 두 수의 나눗셈

아라동 2022. 10. 13. 16:48

안녕하세요 이현석입니다. 

이번 문제는 형변화 과정에서 문제를 발견하고 해결하였습니다. 

바로 문제 보겠습니다~


두 수의 나눗셈

문제 설명 및 입출력 예시 

- 1차 코드

using System;

public class Solution {
    public int solution(int num1, int num2) {
        double basic = (num1 / num2) * 1000;
        
        int resuit = (int)Math.Truncate(basic);
        
        return resuit;
    }
}

-오류

........ 왜 소숫점이 아닌 정수를 잘라내는가!!!!!

Math.Truncate이 소수점을 버리는게 아닌가??? NO!! 소수점을 버리는게 맞아

그럼 계산 과정에서 문제가 있는 건가???


  • 풀이 1
using System;

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

문제는 형변환.....언제나 까다롭게 생각을 하게 만드는 친구다.

 int는 정수만을 값으로 가질 수 있기 때문에 1.5 라는 값이 계산으로 출력된다면 15.가 아닌 1을 출력한다. 때문에 3 /2 = 1로 출력되어 1000이라는 값이 나온 것....

int를 모두 double 타입으로 변화해 줬는데 여기서 Math.Truncate로 소수점 첫째자리부러 버리는 것이 아닌 결과값 basic를 int로 형변환시켜 소수점을 모두 지워줬습니다.


언제 사용해도 헷갈리는 형변화.... 어느위치에 어떻게 사용해야하는지 많은 고민이 필요하다.

 

이상 포스팅 마무리 하겠습니다.

 

Comments