[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; } 풀이 과정 간단하게 삼항연산자 를 통하여 구현하였다. 코드를 너무 간단하게 구현 하였기 때문에 설명은 생략!
[level 1] 하샤드의 수
·
알고리즘/JavaScript
문제 풀이 코드 function solution(x) { let stringTox = x + ''; let sum; sum = stringTox.split('').reduce((s, current) => s + current * 1, 0); return x % sum === 0; } 풀이 과정 문자열 함수, 배열 함수를 사용하여 구현 하였다! 1) x 에 '' 빈 문자를 더하여 String 으로 변환하고, 이를 stringTox 변수에 담았다. 2) split 함수를 이용해 문자열의 각 요소를 배열로 만들었고, 해당 배열을 reduce 함수를 통해 모두 더해주었다, 더한 값을 sum 에 저장 3) x 와 sum 과의 나머지 연산에서 나머지가 없으면 하샤드 수 true 를 반환하게 구현했다. 슬슬 자바스크..
[level 1] 핸드폰 번호 가리기
·
알고리즘/JavaScript
문제 풀이 코드 function solution(phone_number) { let starlen = phone_number.length - 4; return '*'.repeat(starlen) + phone_number.slice(-4); } 풀이 과정 처음에 replace 를 생각했다 이걸 적용하려면 정규식을 잘 써야 하는데 정규식에 대한 지식이 부족했다.. 정규식으로 풀면 한줄이면 끝날거같았는데.. 도저히 생각이 나지 않아 다른 방법으로 구현 하였다. repeat(숫자) : 숫자만큼 반복함 slice(인덱스) : 해당 인덱스 부터 끝까지의 문자열만 반환함 다른사람의 풀이 function hide_numbers(s) { return s.replace(/\d(?=\d{4})/g, "*"); } 정규식으..
[level 1] 문자열을 정수로 바꾸기
·
알고리즘/JavaScript
문제 풀이 코드 function solution(s) { return parseInt(s); } 풀이 과정 생략