최소 공백수란 최소 공백수는 두 개 이상의 정수를 나누어 떨어지게 하는 가장 작은 양의 정수를 말합니다. 예를 들어 6와 8의 최소 공배수는 24입니다. 최소 공백수 알고리즘 서로소 x 최대 공약수 = 최소 공백수가 나옵니다. (두 개의 정수 곱) / 최대 공약수 = 최소 공백수가 나옵니다. 유클리드 호제법을 이용한 최소 공백수 코드 예시 function gcd(a, b) { while(b !== 0) { let r = a % b a = b b = r } return a } function lcm(a, b) { return (a*b) / gcd(a, b) }
최대 공약수 개요 최대 공약수는 두 개 이상의 정수를 나누어 떨어지게 하는 가장 큰 양의 정수를 말합니다. 예를 들어, 12와 18의 최대 공약수는 6입니다. 소인수 분해를 이용한 최대 공약수 동작원리 두 수를 소인수분해합니다. 공통된 소인수들을 찾아냅니다. 공통된 소인수들의 곱이 최대 공약수입니다. 소인수 분해를 이용한 최대 공약수 코드 예시 // 소인수 구하기 function getPrimeFactors(n) { const factors = [] let divisor = 2 while(n >= 2) { if(n % divisor === 0) { factors.push(n) n /= divisor } else { divisor++ } } } // 최대공약수 구하기 function gcd(a, b) { ..
하노이 탑이란? 이 문제는 세 개의 기둥과 한 기둥에 쌓여 있는 원반들로 구성되어 있습니다. 원반의 크기는 모두 다르며, 규칙에 따라 큰 원반이 작은 원반 위에 있어서는 안 됩니다. 목표는 최소 이동 횟수로 한 기둥에 쌓여 있는 원반들을 다른 기둥으로 모두 옮기는 것입니다. 하노이 탑 규칙 한 번에 한 개의 원반만 이동할 수 있습니다. 원반은 세 개의 기둥 중 하나에만 있을 수 있습니다. 큰 원반이 작은 원반 위에 있어서는 안 됩니다. 모든 원반을 다른 기둥으로 모두 옮기면 끝입니다. 하노이 탑 문제 해결 방법 n-1개의 원반을 시작 기둥에서 보조 기둥으로 옮깁니다. 남은 한 개의 원반을 시작 기둥에서 목표 기둥으로 옮깁니다.(+1) 보조 기둥에 있는 n-1개의 원반을 목표 기둥으로 옮깁니다. 이 때의 ..
내장 함수 length를 이용한 문자열 길이 계산하기 const strings = "hello world" console.log(strings.length()) 빈 문자열일 경우 0을 반환합니다. 띄어쓰기도 포함하여 계산합니다. 위에 같은 경우에는 10이 아니라 11이 보여집니다. 반복문을 이용한 문자열 길이 계산하기 function strLength(str) { let count = 0 for(let i =0; i < str.length; i++) { count++ } return count } 재귀 함수를 이용한 문자열 길이 계산하기 function strLength(str) { if(str === '') return 0 return 1 + strLength(str.slice(1)) }
프로그래밍에서 문자열을 합치기는 자주 사용됩니다. +연산자를 이용한 이어붙이기 const str1 = "hello" const str2 = "wolrd" console.log(str1 + " " + str2) +연산자를 이용해서 직관적이게 문자열을 이어붙였습니다. concat() 메서드를 이용한 이어붙이기 const str1 = "hello" const str2 = "world" console.log(str1.concat(" ", str2)) 여러 문자열을 이어붙일 때 가독성이 좋습니다. 반복문을 이용한 이어붙이기(배열) function concatStrings(strArr) { let result = '' for(let i = 0; i < strArr.length; i++) { result += str..
반복문을 사용한 문자열 뒤집기 function reverseString(str) { let reversed = '' for(let i = str.length - 1; i >= 0; i--) { reversed += str[i] } return reversed } 문자열의 뒤쪽에서 부터 하나하나 결과물에 더하는 방식입니다. 반복문 1/2 사용한 문자열 뒤집기 function reverseString(str) { const strArray = str.split('') for(let i = 0; i < str.length / 2; i++) { const temp = strArray[i] strArray[i] = strArray[strArray.length - i - 1] strArray[strArray.len..