반응형
유한소수 판별하기
내 풀이
🧸 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 |