본문 바로가기

CS/알고리즘

[230323] 유한소수 판별하기: toFixed

반응형

 

유한소수 판별하기 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


 

 

내 풀이

🧸 1. a, b의 최대공약수 찾음(gcd)
     2. b를 gcd로 나눔 = b
     3. b를 2와 5로 나눌 수 있을 때까지 나눔 = b
     4. b가 1이면 1, 아니면 2

 

function solution(a, b) {
    const getGCD = (x, y) => x % y === 0 ? y : getGCD(y, x % y);
    
    const gcd = getGCD(a, b);

    let bb = b / gcd;
    while(bb % 2 === 0 || bb % 5 === 0) {
        if(bb % 2 === 0) bb /= 2;
        if(bb % 5 === 0) bb /= 5;
    }
    return bb === 1 ? 1 : 2
}

 

 

 

 

비슷한 다른 풀이

function solution(a, b) {
    let n = 1;
    for (let i = 1; i <= Math.min(a,b); i++) {
        if (a%i===0 && b%i===0) n = i;
    }

    b/=n;
    while (b%2===0) b/=2;
    while (b%5===0) b/=5;

    return b === 1 ? 1 : 2;   
}

 

 

 

천재인가 풀이

function solution(a, b) {
    return Number((a / b).toFixed(10)) == a / b ? 1 : 2
}

a / b 를 하고 소수점 10까지 자른 숫자가 a / b 와 동일하면 유한소수!

동일하지 않다면 무한소수!

 

 

 

(+) Number.prototype.toFixed

숫자를 고정 소수점 표기법으로 표시한다.

예로 들어서 (123.456).toFixed(2)이라 하면, 123.45 다.

  • toFixed() 는 Number 객체를 주어진 digits만큼의 소수점 이하 자리수를 정확하게 갖는 문자열 표현으로 반환한다.
  • 소수점 이하가 길면 숫자를 반올림하고, 짧아서 부족할 경우 뒤를 0으로 채울 수 있습니다.
  • 메서드를 호출한 숫자의 크기가 1e+21보다 크다면 Number.prototype.toString() 을 호출하여 받은 지수 표기법 결과를 대신 반환합니다.

사용법

numObj.toFixed([digits])
  • 매개변수(digits): 소수점 뒤에 나타날 자릿수. 0 이상 20 이하의 값을 사용할 수 있으며, 구현체에 따라 더 넓은 범위의 값을 지원할 수도 있습니다. 값을 지정하지 않으면 0을 사용합니다.
  • 반환값: 고정 소수점 표기법을 사용하여 나타낸 수를 문자열로 바꾼 값.
  • 예제
var numObj = 12345.6789;

numObj.toFixed();       // Returns '12346': 반올림하며, 소수 부분을 남기지 않습니다.
numObj.toFixed(1);      // Returns '12345.7': 반올림합니다.
numObj.toFixed(6);      // Returns '12345.678900': 빈 공간을 0으로 채웁니다.
(1.23e+20).toFixed(2);  // Returns '123000000000000000000.00'
(1.23e-10).toFixed(2);  // Returns '0.00'
2.34.toFixed(1);        // Returns '2.3'
2.35.toFixed(1);        // Returns '2.4'. 이 경우에는 올림을 합니다.
-2.34.toFixed(1);       // Returns -2.3 (연산자의 적용이 우선이기 때문에, 음수의 경우 문자열로 반환하지 않습니다...)
(-2.34).toFixed(1);     // Returns '-2.3' (...괄호를 사용할 경우 문자열을 반환합니다.)

 

 

 

 

반응형

'CS > 알고리즘' 카테고리의 다른 글

[230323] 둘만의 암호  (0) 2023.03.26
[230323] 최빈값 구하기  (0) 2023.03.26
[230322] 등수 매기기: indexOf  (0) 2023.03.26
[230321] 특이한 정렬  (0) 2023.03.26
[230321] 최대공약수(GCD), 최소공배수(LCM)  (0) 2023.03.21