javascript에서의 조건문, 반복문에 대한 이론 공부 및 관련 코딩 문제 풀기
직접 작성해서 풀었던 내용과 해당 풀이를 보면 효율성에서 확실히 차이가 나는 것 같다.
예를 들어 주어진 수보다 작은 모든 소수를 찾아서 이를 문자열 형태로 반환하는 함수 문제에서
이중for문을 사용해서 작성할 때도
function findPrimes(limit) {
let primeList = '2';
for (let candidate = 3; candidate <= limit; candidate += 2) {
let isPrime = true;
let squareRoot = parseInt(Math.sqrt(candidate));
for (let divisor = 3; divisor <= squareRoot; divisor += 2) {
if (candidate % divisor === 0) {
isPrime = false;
break;
}
}
if (isPrime) {
primeList = `${primeList}-${candidate}`;
}
}
return primeList;
}
이런 식으로 짝수는 2를 제외하면 소수가 아니므로 검사할 필요가 없으니 제외하고 제곱근의 정수 부분을 계산하여 3부터 sqrt까지의 홀수로 나누어보며 소수인지 확인하는 식인데 단순하게 작동하게 하는건 할만 했지만 이렇게 조건도 최적화하는 논리를 생각해내는 게 어려웠다.
코드 실행 시간을 줄일 수 있도록 최적화하며 작성해야 하는데 그러한 면에서 부족한 것 같다.
간단하면서도 유용한 알고리즘을 사용하고 변수 이름과 코드 구조가 명확하게 작성해서 다른 사람들이 보더라도 코드를 이해하고 활용하는 데 도움이 되도록 노력해야겠다.
그래도 오늘 공부하면서 페어프로그램으로 다른사람들과 함께 문제를 풀어봤는데 혼자서 문제를 풀 때보다 문제를 설명하면서 같이 풀다보니까 스스로 이해도 잘 되고 더욱 전달력을 높일 수 있는 좋은 경험이었다.