[level 1] 정수 내림차순으로 배치하기
·
알고리즘/JavaScript
문제 풀이 코드 function solution(n) { let sortNum = n .toString() .split('') .sort((a, b) => a - b) .reverse() .join(''); return parseInt(sortNum); } 풀이 과정 함수를 이용하여 풀이 하였다. 각 단계별로 설명하면 다음과 같다. 1. toString 함수를 이용하여 문자열로 형 변환 2. split('') 함수를 이용하여, 각 요소를 나누어 배열 생성 3. sort() 함수를 이용하여, 각 요소를 정렬 4. reverse() 함수를 이용하여, 정렬된 요소를 반전 5. join() 함수를 이용하여, 배열의 요소들을 문자열로 생성 6. parseInt() 함수를 이용하여, 문자열을 정수로 변환하여 반환 ..
[level 1] 정수 제곱근 판별
·
알고리즘/JavaScript
문제 풀이 코드 function solution(n) { let num = Math.sqrt(n); if (num == Math.floor(num)) return (num + 1) ** 2; else return -1; } 풀이 과정 sqrt 함수를 이용하여, 제곱근을 구하고, floor 함수를 이용해 소수점 아래 수를 전부 버리고, 제곱근의 값과 같은지 비교하였다. 이 과정에서 제곱근이 정수인지 판별할 수 있었고, 제곱근이 정수라면 다음수의 제곱근을 반환, 제곱근이 정수가 아니라면 -1 을 반환하게 하였다.
[level 1] 제일 작은 수 제거하기
·
알고리즘/JavaScript
문제 풀이 코드 function solution(arr) { arr.splice(arr.indexOf(Math.min(...arr)), 1); return arr.length == 0 ? [-1] : arr; } 풀이 과정 처음에 sort 를 하여, 0인덱스의 값을 제거했다. 이렇게 하고나서 문제를 다시보니 배열의 순서는 유지 되어야한다 그래서 Math.min 함수를 통해, 최소값이 있는 해당 인덱스를 구하여 , splice 함수를 적용했다, 단, 제거했을때 배열에 남는값이 없다면, ( 배열의 길이가 0 이라면 ) [-1] 을 return 하게 적용했다. 여기서도 Math.min 함수에 처음에 Math.min(arr) 로만 작성했지만, 테스트에서 Fail 되었다.. 그래서 그 이유를 검색해보니 Math...
[level 1] 최대공약수와 최소공배수
·
알고리즘/JavaScript
문제 풀이 코드 const calcuGCD = (n, m) => { return n % m == 0 ? m : calcuGCD(m, n % m); } function solution(n, m) { let gcd = calcuGCD(n,m); let lcm = (n * m) / gcd; return [gcd, lcm] } 풀이 과정 최대공약수를 구하기 위해 유클리드 호제법 을 사용하였다. 유클리드 호제법이란? A , B 의 최대공약수를 구하는 수식 1. 만약 A 를 B 로 나눈 나머지 값이 0이면, 최대공약수는 B가 된다. 2. 그렇지 않다면 A 를 B로 대치하고, B를 A를 B로 나눈 나머지로 대치한다 3. 1번의 조건이 성립될때까지 계속 반복한다. 위의 조건을 재귀함수를 통하여 코드로 구현하면 func..
[level 1] 콜라츠 추측
·
알고리즘/JavaScript
문제 풀이 코드 function solution(num) { let count = 0; while (num !== 1) { num = num % 2 === 0 ? num / 2 : num * 3 + 1; count++; } return count < 500 ? count : -1; } 풀이 과정 간단하게 삼항연산자 를 통하여 구현하였다. 코드를 너무 간단하게 구현 하였기 때문에 설명은 생략!